Я добавил поле в форму регистрации, основанное на другой модели, см. Как использовать вложенные атрибуты с моделью устройства для подробной информации. Эта часть работает нормально.
Проблема сейчас в том, что при сохранении происходит сбой в действии create контроллера регистраций, который предоставляется devise с Activerecord::UnknownAttributeError
полем on (компания).
Я предполагаю, что мне нужно переопределить контроллер регистраций, или есть лучший / более простой способ, которым я должен подходить к этому?
ruby-on-rails
devise
Крейг МакГафф
источник
источник
Ответы:
В своей форме вы передаете какие-либо другие атрибуты, посредством массового назначения, которые не принадлежат вашей пользовательской модели или какой-либо из вложенных моделей?
Если так, то я считаю, что ActiveRecord :: UnknownAttributeError запускается в этом случае.
В противном случае, я думаю, вы можете просто создать свой собственный контроллер, сгенерировав что-то вроде этого:
А затем скажите devise для использования этого контроллера вместо стандартного с помощью:
источник
rails generate devise:views
а в Rails 2 (я думаю) это:script/generate devise:views
paths.app.views << "app/views/devise"
в своиconfig/application.rb
.Лучший и более организованный способ переопределения контроллеров и представлений Devise с использованием пространств имен:
Создайте следующие папки:
Поместите все контроллеры, которые вы хотите переопределить, в app / controllers / my_devise и добавьте
MyDevise
пространство имен к именам классов контроллеров.Registrations
пример:Измените ваши маршруты соответственно:
Скопируйте все необходимые виды в
app/views/my_devise
папку Devise или используйте ихrails generate devise:views
, удалите виды, которые вы не переопределяете, и переименуйтеdevise
папкуmy_devise
.Таким образом, все будет аккуратно организовано в две папки.
источник
create
методе Devise'а я переписал. Мой созданный скаффолдом контроллер, который я модифицировал, прекрасно работает, но как сделать так, чтобы он работал сresource
бизнесом Devise ?MyDevise::RegistrationsController < Devise::RegistrationsController
создает круговую ошибку зависимости. Я делаю что-то неправильно?Я считаю, что есть лучшее решение, чем переписать RegistrationsController. Я сделал то же самое (у меня просто Организация вместо Компании).
Если вы правильно установите вложенную форму на уровне модели и вида, все будет работать как шарм.
Моя модель пользователя:
Моя организационная модель:
Мой взгляд: 'devise / registrations / new.html.erb'
источник
resource
в представлении вместо переменной экземпляра класса@resource
?Вы можете создавать представления и контроллеры для разработки настроек.
использование
и
Он скопирует определенные контроллеры и представления из gem в ваше приложение.
Далее скажите маршрутизатору использовать этот контроллер:
источник
Очень простые методы Просто зайдите в терминал и введите следующий
Далее использовать пользовательские представления
теперь в вашем файле route.rb
Вы также можете добавить другие контроллеры. Это позволит использовать контроллеры в папке пользователей и представления в папке пользователей.
Теперь вы можете настроить свои представления по своему желанию и добавить свою логику для контроллеров в папке controllers / users. Наслаждайтесь !
источник