如何为link_to helper指定不同的操作?

时间:2013-12-24 17:50:49

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 link-to

我正在创建一个网站,用户可以在其中标记和取消标记项目"收藏"。 我使用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'  %>

1 个答案:

答案 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 %>

这种方式更有资源,而前一个例子是非资源性的。