2017-10-20 16 views
0

は、私がここで定義されたパターンを使用して、フォームオブジェクトがあります。その例とは異なりhttps://forum.upcase.com/t/form-objects/2267レールフォームオブジェクトでマルチパラメータ属性をサポートする方法は?

class RegistrationForm 
    include ActiveModel::Model 

    attr_accessor :first_name, :last_name, :date_of_birth 
    ... 
end 

を、私の形での基礎となるモデルの一つは、日付フィールドを持っています。その日付フィールドは、単純なフォームによってマルチパラメータ属性として提示されている、そのようにコントローラにを通じて提出されています

"user"=> 
    {"first_name"=>"Hanna", 
    "last_name"=>"Macias", 
    "date_of_birth(1i)"=>"2016", 
    "date_of_birth(2i)"=>"2", 
    "date_of_birth(3i)"=>"26", 
... 

しかし、私は、コントローラ上の#createアクションでRegistrationForm.new(registration_params)からunknown attribute 'date_of_birth(1i)' for RegistrationForm.エラーを取得しています:

def create 
    @registration = RegistrationForm.new(registration_params) 
    if @registration.save 
    redirect_to root_path 
    else 
    render 'new' 
    end 
end 

private 

def registration_params 
    params.require(:registration).permit! 
end 

:date_of_birth_1i, :date_of_birth_2i, :date_of_birth_3iなどでさらにattr_accessorを定義しようとしましたが、これで問題は解決されませんでした。

multiparameter属性を正しく処理するには何が必要ですか?

+0

これは、http://guides.rubyonrails.org/form_helpers.html#nested-formsとこのapiページhttp://edgeapi.rubyonrails.org/classes/ActionController/Parameters.html Iあなたのparamsは 'params.require(:user).permit(:first_name)'のようなものであるべきだと考えてください。この 'post'リクエストで' binding.pry'を設定し、コンソールで 'params hash'をチェックし、' registration_params'メソッドに 'first_name'も含めるように設定する方法があります。おそらく 'params.require(" user ")。permit(" first_name ")'が必要です。これをコンソールでテストし、あなたの入力を取得するかどうかを確認してください –

答えて

0

include ActiveRecord::AttributeAssignmentActiveModel::Modelが必要で、それが問題を解決しました。

関連する問題