我关注Ryan Bates' Multistep Forms cast,但我的参数前缀为“user_”。因此密码变为user_password等。在用户创建期间,不会验证teamname属性。我想这是由于user_前缀,我认为这是由于其默认前缀或使用“user_params”而导致的deep_merge,并试图添加“{:knockout_prefix =>'user_'}”但它没有'工作。
users / new.html.erb以例程“<%= form_for @user do | f |%>”开头并包括“<%= render”#{@user.current_step}_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" />
有没有猜测为什么会出现这种前缀?
答案 0 :(得分:0)
我在"in UsersController#create, User.new(params[:user]) return an empty User (params looks good)"找到了解决方案。在他的回答中,迪伦马科说:
您可以使用质量赋值来设置模型上的字段,但是当使用attr_accessible时,您仅限于在attr_accessible行中批量分配字段。
所以我将所有用户参数添加到attr_accessible选项,并且验证工作正常。