我有这样的观点:
<% if actions.include? "delete" %>
<%= link_to 'Usuń', asset_path(asset), :method => :delete, :data => { :confirm => "Want to delete it?" }, :role => "link" %>
<% end %>
,这在assetcontroller中:
def destroy
@asset = current_user.assets.find(params[:id])
@asset.destroy
redirect_to assets_path
end
问题是,当视图中的动作是“删除”时,为什么它“使用”破坏方法?
答案 0 :(得分:1)
delete
是HTTP协议的方法。 destroy
是action
的{{1}}。
使用controller
HTTP方法路由会导致delete
操作。
要编辑此路线并将destroy
HTTP方法引导至delete
操作(例如),您应修改delete
文件。
答案 1 :(得分:1)
这是因为在您的routes.rb文件中,您已将模型定义为资源(或者像scaffold那样的生成器)。这意味着将生成默认的CRUD路由。如果您想以另一种方式进行,请使用您自己的路线而不是生成它们。
http://guides.rubyonrails.org/routing.html#crud-verbs-and-actions