0

Обновлено: У меня есть link_to для удаления объекта, который является вложенным ресурсом. Перед уничтожением у меня есть метод, который проверяет экземпляр этого объекта на основе object_params, но отправленные параметры продолжают поднимать undefined method 'permit' for "asdfsadf":String, когда он пытается ссылаться на object_params.undefined method `allow 'for" ** output omitted ** ": String

Кнопка:

<%= 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?

+0

Я думаю, что ваша ошибка в методе 'object_params'. Можете ли вы вставить содержимое этого метода здесь? – tolgap

+0

@tolgap обновленный вопрос с 'object_params' – Dan

ответ

1

Ваш object_params метод , требующий, чтобы он был под номером set_list. В вашем params такого параметра нет.

Это будет работать для вас:

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

Вам не нужно обернуть params[:id] поиск через permit, как вы не массовое назначение ничего.

+0

Я пробовал это, и он создает экземпляр, но все же удается ударить 'object_params' и ошибку. – Dan

+1

Меня обманывали! Я перезапустил свой сервер, и он работал как шарм! Большое спасибо :) Также из любопытства, если бы я поддерживал 'object_params', включил бы' set_list' в params решить его по-другому? – Dan

+0

Да, но вам определенно не нужно что-то типа object_params для выбранного запроса. Вам нужно только разрешить атрибуты, если вы собираетесь делать что-то вроде «Object.new object_params», чтобы вы контролировали атрибуты, и никакие вредные атрибуты не могут быть установлены пользователем. – tolgap

0

Похоже, вы пытаетесь использовать простой хэш для создания объекта, где ожидаются сильные параметры.

Использование

@object = Object.where(object_params).first 

, а не пытаться толкать их внутрь хэша в методе построения

Редактировать

также, что ваша ссылка требует обновления:

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

, так как вы вводите код он ожидает объект set_list.

** Предыдущее изменение было неверным, извините **

+0

Это еще вернула ту же ошибку, возможно, потому, что она все еще ищет 'object_params'? Кроме того, возможно ли, что он ищет объект, но я даю ему строку? – Dan