Префикс параметров user_ предотвращает проверку формы - PullRequest
0 голосов
/ 14 декабря 2011

Я слежу за Многошаговыми формами Райана Бейтса , но мои параметры имеют префикс "user_". Таким образом, пароль становится user_password и т. Д. При создании пользователя атрибут teamname не проверяется. Я предполагаю, что это из-за префикса user_, и снова я предполагаю, что это из-за deep_merge из-за его префикса по умолчанию или использования «user_params» и пытался добавить «{: knockout_prefix => 'user_'}», но работал.

users / new.html.erb начинается с подпрограммы "<% = form_for @user do | f |%>" и включает в себя "<% = render" # enj@user.current_step automotive_step ",: f => f%> ". Шаги включают в себя такие поля, как «<% = f.text_field: email%>», а не «user_email» или что-либо еще.

users_controller.rb содержит функцию создания:

def create
  session[:user_params].deep_merge!(params[:user]) if params[:user]
  @user = User.new(session[:user_params])
  @user.current_step = session[:user_step]
  ...@user.save...(rest of the code omitted)
end

models / user.rb содержит:

  attr_accessible :email, :password, :password_confirmation
  ..several validation codes according to steps..

И источник веб-страницы:

<input id="user_password" name="user[password]" size="30" type="password" />

Есть ли предположения, почему этот префикс происходит?

1 Ответ

0 голосов
/ 14 декабря 2011

Я нашел решение в "в UsersController # create, User.new (params [: user]) возвращает пустого пользователя (params выглядит хорошо)" .В своем ответе Дилан Марков утверждает, что:

вы можете использовать массовое назначение для задания полей в модели, но когда используется attr_accessible, вы ограничены только массовым назначением полей в строке attr_accessible.

Поэтому я добавил все пользовательские параметры в опцию attr_accessible, и проверки сработали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...