我有两个模型,用户和材料。用户可以喜欢的材料。我已经建立了关系并且收藏代码工作正常,但我似乎无法正确获取取消收藏的代码。我有以下不喜欢的代码:
材料控制器(在不喜欢的形式出现的显示动作中)
@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。似乎没有任何效果。