Я пытаюсь сделать опцию. Это позволяет пользователю добавлять определенный элемент в список избранных. Но я получаю эту ошибку:Rails :: param отсутствует или значение пуст
param is missing or the value is empty: favorite
создать метод в любимом контроллере:
def create
@favorite = Favorite.new(params.require(:favorite).permit(:item_id, :user_id))
if @favorite.save
redirect_to @favorite
flash[:notice] = 'Favorite was successfully created.'
else
render 'new'
end
end
Вид на пункт шоу:
<%= link_to 'Add to favorites', {:controller => "favorites",
:action => "create",
:item_id => @item.id,
:user_id => current_user.id},
:method => "post" %>
Запрос (Параметры):
{ "_method"=>"post", "authenticity_token"=>"Wz1eGNw/3GH9t+aOquT/hu1F27zBSqAx6K6igxoc2VI=", "item_id"=>"27", "user_id"=>"10"}
URL:
/favorites?item_id=27&user_id=10
Я использовал это: @favorite = Favorite.new (params.require (: favorite) .permit (избранное: [: item_id,: user_id])). Я получаю ту же самую ошибку msg. И если я удалю требование, он будет сохранен как ноль. – dima
и oh Я попробовал это "<% = link_to 'Добавить в избранное', {: controller =>" избранное ",: action =>" create ",: params => {: item_id => @ item.id,: user_id => current_user.id}},: method => "post"%> "Но у меня есть неправильное количество аргументов (1 для 0)" кажется, что я отправляю аргументы, пока я не предполагаю. Idk, я в замешательстве. – dima
Думаю, вам просто нужно изменить способ передачи параметров в 'link_to'. Попробуйте что-то вроде '<% = link_to 'Добавить в избранное', {: controller =>" избранное ",: action =>" create ",: params => params.merge ({: favorite => {: item_id => @ item.id,: user_id => current_user.id}})}%> '. Таким образом, вы объединяете свои новые параметры в основной параметр hash и правильно вставляете под 'favorite' –