我收到此错误并使用Rails 5。
NoMethodError(未定义的方法
permit' for #<Array:0x007f51cf4dc948> app/controllers/traumas_controller.rb:99:in
trauma_params' app / controllers / traumas_controller.rb:25:在`create_multiple'
控制器参数如下所示。
在2016-10-04开始为127.0.0.1发布POST“/ traumas / create_multiple” 20:09:36 +0530由TraumasController处理#create_multiple作为JS
参数:{“utf8”=&gt;“✓”,“fields”=&gt; [{“contusions”=&gt;“1”,“burns”=&gt;“”, “at_scene”=&gt;“在场景中”,“emergency_detail_id”=&gt;“96”, “trauma_region”=&gt;“Head-Back”}],“commit”=&gt;“提交”}
我正在尝试在控制器中创建如下记录:
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
请帮我解决此问题。
提前致谢。
基兰。
答案 0 :(得分:8)
我通过引用这个(https://github.com/rails/strong_parameters/issues/140)github问题来解决它。
修改强>
对于以下参数(在Array中):
参数:{&#34;字段&#34; =&gt; [{&#34; contusions&#34; =&gt;&#34; 1&#34;,&#34;烧伤&#34; =&gt; &#34;&#34 ;, &#34; at_scene&#34; =&gt;&#34;在场景&#34;,&#34; emergency_detail_id&#34; =&gt;&#34; 96&#34;, &#34; trauma_region&#34; =&gt;&#34; Head-Back&#34;}],&#34;提交&#34; =&gt;&#34;提交&#34;}
我们可以这样做:
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
答案 1 :(得分:2)
参数:
{"fields"=>[{"contusions"=>"1", "burns"=>"", "at_scene"=>"At Scene", "emergency_detail_id"=>"96", "trauma_region"=>"Head-Back"}]}
列入白名单的对象数组,必须具有“字段”属性:
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