このエラーが発生し、Rails 5を使用しています。
NoMethodError(未定義のメソッド
permit' for #<Array:0x007f51cf4dc948> app/controllers/traumas_controller.rb:99:in
trauma_params'app/controllers/traumas_controller.rb:25:in `create_multiple '
コントローラのパラメータは以下のとおりです。
開始POST "/ traumas/create_multiple" for 127.0.0.1 at 2016-10-04 20:09:36 +0530 TraumasController#create_multipleによるJSとしての処理
パラメータ:{"utf8" => "✓"、 "fields" => [{"contusions" => "1"、 "burns" => ""、 "at_scene" => "At Scene" 、 "emergency_detail_id" => "96"、 "trauma_region" => "Head-Back"}]、 "commit" => "Submit"}
私はコントローラーで以下のようにレコードを作成しようとしています:
def create_multiple
trauma_params
params[:fields].each do |values|
u = Trauma.create(values)
end
end
def trauma_params
params.require(:fields).permit(:fields => [])
end
この問題の解決にご協力ください。
前もって感謝します。
キラン。
これを参照して解決しました( https://github.com/Rails/strong_parameters/issues/14 )githubの問題。
[〜#〜]編集[〜#〜]
次のようなパラメーターの場合(配列内にあります):
パラメータ:{"fields" => [{"contusions" => "1"、 "burns" => ""、 "at_scene" => "At Scene"、 "emergency_detail_id" => "96"、 "trauma_region" = > "Head-Back"}]、 "commit" => "Submit"}
我々はできる:
def trauma_params
params.require(:fields).map do |p|
ActionController::Parameters.new(p).permit(
:contusions,
:burns,
:at_scene,
:emergency_detail_id,
:trauma_region
)
end
end
パラメーター:
{"fields"=>[{"contusions"=>"1", "burns"=>"", "at_scene"=>"At Scene", "emergency_detail_id"=>"96", "trauma_region"=>"Head-Back"}]}
「fields」属性が必要な、ホワイトリストに登録されたオブジェクトの配列:
def trauma_params
params.permit(fields: [
:contusions,
:burns,
:at_scene,
:emergency_detail_id,
:trauma_region
])
.require(:fields)
end
ソース: https://edgeguides.rubyonrails.org/action_controller_overview.html#nested-parameters