0

この 1 つのコーディングだけをアプリに追加したところ、誰も登録できなくなりました。次のエラーが表示されます: マルチパラメータ属性の割り当てに関するエラーが 1 件あります。エラーページのタイトルは「ActiveRecord::MultiparameterAssignmentErrors in UsersController#create」です。残念ながら他の投稿は役に立たなかったので、修正方法がわかりません。誰にもいくつかの解決策がありますか?

new.html.erb:

<div class="field">
                    <%= f.label :birthday %>
                    <%= f.date_select :birthday, :start_year => 1995, :end_year => 1930 %>
                    </div>

ユーザーコントローラー:

def create
    @user = User.new(params[:user])
    if @user.save
      UserMailer.registration_confirmation(@user).deliver
      session[:user_id] = @user.id
      redirect_to root_url, notice: "Thank you for signing up!"
    else
      render "new"
    end
  end

開発ログ:

Started POST "/users" for 127.0.0.1 at 2013-03-22 10:27:31 -0400
Processing by UsersController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"7KAgvcc6yvuhKQGNrJo8UpfsUyuNG16TuMsRj6qst48=", "user"=>{"email"=>"james@james.com", "password"=>"[FILTERED]", "username"=>"james", "zip_code"=>"84784", "gender"=>"women", "age"=>"23", "age_end"=>"39", "birthday(1i)"=>"1995", "birthday(2i)"=>"3", "birthday(3i)"=>"22", "role"=>"admin"}, "commit"=>"Create User"}
Completed 500 Internal Server Error in 100ms

ActiveRecord::MultiparameterAssignmentErrors (1 error(s) on assignment of multiparameter attributes):
  app/controllers/users_controller.rb:18:in `new'
  app/controllers/users_controller.rb:18:in `create'
4

2 に答える 2

2

実際の問題は、データベースの値が VARCHAR であり、代わりに DATE である必要があることでした。今では正常に動作します。

于 2013-08-13T14:26:15.723 に答える
1

まず、誕生日のタイプが であることを確認してくださいDate

ここでのパラメーターでは、誕生日の値は次のようになります。

"birthday(1i)"=>"1995", "birthday(2i)"=>"3", "birthday(3i)"=>"22"

しかし、フィールド ID の型はDateです。私が思うに、誕生日フィールドを更新する前に、適切な日付オブジェクトを生成してから、オブジェクトを更新する必要があります。

@user.birthday = Date.strptime("#{params['birthday(3i)']}/#{params['birthday(2i)']}/#{params['birthday(1i)']}", "%d/%m/%y")

ここでオブジェクトを保存します。今回はエラーが発生しないことを願っています。

それでもエラーが発生する場合は、お知らせください。

于 2013-03-22T18:54:25.487 に答える