我正在创建一个网站,用户可以在其中标记和取消标记项目"收藏"。
我使用Rails'通过Ajax实现了这一点。表单属性remote: true
,因此整个页面不会重新加载,只会更改项目的状态。
我在FavouritesController
def create
Favourite.create!(item_id: params[:favourite][:item_id])
respond_to { |format| format.js }
end
def destroy
Favourite.find(params[:id]).destroy!
respond_to { |format| format.js }
end
问题是:
我想将同一个控制器中的另一个动作调用到" unmark"另一个视图中的项目。我使用下面的代码但是当我点击链接时 - 从控制器调用旧方法destroy
,而不是所需的delete_from_index_list
方法。
我需要两个单独的方法,因为它们返回不同的javascript(jquery)。
<%= link_to "delete", @favourite, method: :delete, remote: true, action: 'delete_from_index_list' %>
答案 0 :(得分:1)
查看the link_to documentation - 我将描述你想要的内容。
我没有测试过这个,但我猜你想要:
<%= link_to "delete", controller: 'favourites', action: 'delete_from_index_list', id: @favourite, remote: true %>
如果是我的代码,我会找到delete_from_index_list
方法的路由,并以这种方式调用它:
<%= link_to "delete", route_for_delete_from_index_list_path(@favourite), method: :delete %>
这种方式更有资源,而前一个例子是非资源性的。