0

我有两个模型,用户和材料。用户可以喜欢的材料。我已经建立了关系并且收藏代码工作正常,但我似乎无法正确获取取消收藏的代码。我有以下不喜欢的代码:

材料控制器(在不喜欢的形式出现的显示动作中)

@favourite = Favmat.where(:user_id => current_user.id, :material_id => @material.id)

注意:我使用此代码来决定在视图中显示哪个按钮。假设存在记录,我们得到:

看法

<%= form_for @favourite, :method => :delete do |f| %>
<%= f.submit "Unfavourite" %>
<% end %>

问题似乎就在这里。我所做的任何事情似乎都没有让我找到在 favmats 控制器中进行销毁操作的有效途径。我尝试使用 form_tag 代替,但后来我得到了非常奇怪的路线,这些路线不起作用。

Favmats 控制器

def destroy
  Favmat.find(params[:id]).destroy
  respond_to do |format|
    format.html { redirect_to @material }
    format.js
  end
end

更新

我也尝试过使用 link_to 而不是表单。代码如下:

<%= link_to "Unfavourite", favmat_path, method: "delete" %>

奇怪的是,用于此的 html 从材料中获取 favmat id,而不是 favmat 对象。我不知道如何在其中获取 favmat 对象 ID。似乎没有任何效果。

4

1 回答 1

1

尝试传递@favouriteobject 而不是favmat_pathto link_to

<%= link_to "Unfavourite", @favourite, method: :delete %>
于 2013-06-19T18:37:21.077 回答