2014-10-26 7 views
1

Я делаю onemonth рельсы, и у меня проблема с функцией attr_accessible. Я установил его как драгоценный камень в rails 4 (gem «protected_attributes») и использовал его с помощью simple_form.attr_accessible in rails 4

Но проблема в том, что когда я обновляю свою форму с именем, она ее не помнит! Но он говорит, что он успешно обновляется?

Ths мой user.rb

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    attr_accessible :email, :password, :password_confirmation, :remember_me, :name 
end 
+0

удалить всю строку 'attr_accessible' и использовать сильные параметры в вашем пользовательском контроллере – emaillenin

+0

Я создал пользовательский контроллер, но я не понимаю, что мне нужно вставить в него, чтобы заставить его работать? –

ответ

3

Поскольку вы используете Devise вы можете удалить всю attr_accessible линию (и strong_parameters камень, см подробнее ниже). Devise предоставляет a controller, который уже зарегистрировал вас.

Если вы хотите добавить другие атрибуты для вашего пользователя вы можете создать подкласс Devise::RegistrationsController с вашим собственным контроллером:

# app/controllers/registrations_controller 
class RegistrationsController < Devise::RegistrationsController 

    private 

    def sign_up_params 
    params.require(:user).permit(:name, :email, :password, :password_confirmation) 
    end 

    def account_update_params 
    params.require(:user).permit(:name, :email, :password, :password_confirmation, :current_password) 
    end 
end 

тогда Вы должны сказать Придумайте маршрут к пользовательскому контроллеру:

# config/routes.rb 
devise_for :users, :controllers => { registrations: 'registrations' } 

PS. Я также рекомендую удалить драгоценный камень strong_parameters и использовать его из коробки Rails 4 strong parameters. Существует несколько известных проблем с параметрами «белый список» на уровне модели (например, различные параметры для разных действий).

+0

Также здесь [пример приложения] (https://github.com/remote-wind/remote-wind), который использует Devise и simple_form. – max

+0

Вы сказали, что devise предоставляет контроллер, но я не могу найти его под/devise/app/controller/devise/registrations_controller.rb/мне нужно его создать самостоятельно, я что-то пропустил? Tnx Tom –

+0

Да, но он находится в камне Devise - не в вашем коде приложения. Вы можете найти местоположение, запустив 'gem, который разрабатывает'. – max

Смежные вопросы