调用更新操作时出错

时间:2017-08-22 14:52:55

标签: ruby-on-rails

<%= 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。谁知道我有什么错误?

2 个答案:

答案 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