1

我有这样的看法:

<% if actions.include? "delete" %>
 <%= link_to 'Usuń', asset_path(asset), :method => :delete, :data => { :confirm =>   "Want to delete it?" }, :role => "link" %>
 <% end %>

这在资产控制器中:

def destroy

@asset = current_user.assets.find(params[:id])
@asset.destroy
redirect_to assets_path

end

问题是,当视图中的操作是“删除”时,为什么它“使用”销毁方法?

4

2 回答 2

1

delete是HTTP协议的方法。destroyaction你的controller。使用 HTTP 方法的路由delete会导致destroy操作。

要编辑此路由并使deleteHTTP 方法导致delete操作(例如),您应该编辑config/routes.rbfile.

于 2013-06-25T10:53:33.113 回答
1

这是因为在您的 routes.rb 文件中,您已将模型定义为资源(​​或像脚手架那样的生成器)。这意味着会生成默认的 CRUD 路由。如果您想以另一种方式进行操作,请使用您自己的路线而不是生成路线。

http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions

于 2013-06-25T11:01:43.907 回答