2011-12-14 16 views
0

私はRyan Bates' Multistep Forms castに従っていますが、パラメータには「user_」という接頭辞が付きます。パスワードはuser_passwordなどになります。ユーザー作成時には、teamname属性は検証されません。私はこれがuser_接頭辞によるものだと思うし、再度デフォルトの接頭辞または "user_params"の使用によるdeep_mergeによるもので、 "{:knockout_prefix => 'user_'}"を追加しようとしましたが、働いた。パラメータの接頭辞「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] 
    [email protected](rest of the code omitted) 
end 

モデル/ user.rbは含まれています

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

とWebページのソースは次のとおりです。

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

は、任意のはありますなぜこのプレフィックスが発生しているのだろうか?

答えて

0

解決策が見つかったのは"in UsersController#create, User.new(params[:user]) return an empty User (params looks good)"です。

あなたがモデルのフィールドを設定するために大量の割り当てを使用することができますが、attr_accessibleを使用した場合、あなたはattr_accessibleラインで唯一の質量の割り当てフィールドに制限されています:彼の答えでは、ディランMarkowは、と述べています。

したがって、すべてのユーザーパラメータをattr_accessibleオプションに追加して、検証が機能しました。

関連する問題