未定义的方法`permit' for" **省略输出**":String

时间:2015-10-02 20:21:26

标签: ruby-on-rails ruby-on-rails-4 link-to destroy nested-resources

更新: 我有一个link_to设置用于删除作为嵌套资源的对象。在销毁之前,我有一个基于object_params检查该对象实例的方法,但是当它尝试引用undefined method 'permit' for "asdfsadf":String时发送的params继续引发object_params

按钮:

<%= link_to content_tag('button', '', class: 'btn fa fa-trash-o focus-delete-button'), parent_object_path( :parent_id => focus.z_kf_parent, :id => focus.id, :object => focus), data: {confirm: "Are you sure you want to delete '#{focus.name}'"}, method: :delete %>

PARAMS:

 {"_method"=>"delete",
 "authenticity_token"=>"gmlVYHy230Y1lQY=",
 "object"=>"6c1367b1-1d63-4545-bbdb-b8ac9bd39422",
 "action"=>"destroy",
 "controller"=>"objects",
 "parent_id"=>"FA100073-4A0C-4EE0-8FB1-3EC39C61AD39",
 "id"=>"5-bbdb-b8ac9"}

object_params:

def object_params
    params.require(:set_list).permit(:id, :photographer, :digital_tech, :photo_production, :stylist, :stylist_assistant, :hair_makeup, :photographer_assistant, :name, :t_start, :t_finish, :z_kf_parent)
  end

方法:

def set_object
  binding.pry
  @object = Object.(object_id: object_params[:id]).first
end

我没有在link_to中设置参数吗?

2 个答案:

答案 0 :(得分:1)

您的bash libexec/yarn-config.sh 方法要求有一个名为object_params的参数。您的set_list中没有此类参数。

这对你有用:

params

您不需要通过def set_object binding.pry @object = Object.where(object_id: params[:id]).first end 包裹params[:id]查询,因为您没有批量分配任何内容。

答案 1 :(得分:0)

在我看来,您正在尝试使用普通哈希来构建一个需要强参数的对象。

使用

@object = Object.where(object_params).first

而不是试图将它们推入构建方法中的哈希

修改

您的链接似乎也需要更新:

parent_object_path(set_list: {id: ..., etc})

因为你的代码说它需要set_list对象。

**之前的编辑不正确,抱歉**