<%= form_for(@object, url: obj_path) do |f| %>
<%= f.label :Flow_ID %>:
<%= select_tag "flow", options_from_collection_for_select(@flows, "id", "name") %><br><br>
<%= f.label :Object_Type_ID %>:
<%= select_tag "object_type", options_from_collection_for_select(@object_types, "id", "name") %><br><br>
<%= f.label :name %>
<%= f.text_field :name %><br><br>
<%= f.label :label %>
<%= f.text_field :label %><br><br>
<%= f.submit "Update Object", class: "btn btn-success" %><br>
<%= link_to "Back", objs_path %>
<% end %>
这是edit.html.erb
class ObjsController < ApplicationController
def update
@object = Obj.find(params[:id])
@object.flow_id = params[:flow]
@object.object_type_id = params[:object_type]
@object.update(object_params)
redirect_to objs_url
end
private
def object_params
params.require(:object).permit(:name, :label)
end
end
这是objs_controller.rb。
当我点击更新按钮时,缺少object_params。谁知道我有什么错误?
答案 0 :(得分:2)
param丢失或值为空:object
你应该改变
def object_params
params.require(:object).permit(:name, :label)
end
到
def object_params
params.require(:obj).permit(:name, :label)
end
因为你的模特是 Obj
而不是Object
如果您查看params
哈希,您会看到:obj
密钥。因此,您需要使用:obj
而不是:object
答案 1 :(得分:1)
如果您的型号名称是Obj,则表示您不匹配。将Obj更改为Object或Object更改为Obj。我可以根据您的回复进一步更新我的答案。还要在您的问题中提供完整的错误日志。
更改行
params.require(:object).permit(:name, :label)
到
params.require(:obj).permit(:name, :label)
那应该解决问题。 strong parameters