我正在使用Paperclip存储名为“费用”的记录的图像 - 图像是费用的收据。
一切正常,但是当我去编辑费用时,我希望有一个链接来删除与该费用相关联的图像,所以在我的expense_controller中,我有:
def delete_receipt_img
@expense = Expense.find(params[:id])
@expense.receipt_img.destroy
@expense.receipt_img.clear
@expense.save
redirect_to edit_expense_path(params[:id])
end
我生成编辑费用页面的视图,其中部分仅在图像与费用相关联时显示删除链接:
<% if @expense.id.nil? || !@expense.receipt_img.file? %>
<%= f.label :attach_receipt %><br/>
<%= f.file_field :receipt_img %>
<% else %>
<%= image_tag @expense.receipt_img.url %>
<%= link_to "Delete Receipt",
delete_receipt_img_expense_url(@expense.id),
:method => :put %>
<% end %>
在我的路由文件中,我按照Rails路由指南中的一个示例,创建了这样的链接:
resources :expenses do
member do
put 'delete_receipt_img'
end
end
当我转到编辑费用页面时,我看到“删除收据”链接是这样生成的:
<a href="http://localhost:3000/expenses/1/delete_receipt_img" data-method="put" rel="nofollow">Delete Receipt</a>
所以看起来就像一切都很好,但是当我点击链接时,我收到路由错误:
路由错误
没有路线匹配[GET]“/ expenses / 1 / delete_receipt_img”
尝试运行rake路线以获取有关可用路线的更多信息。
我无法弄清楚这个GET请求的来源!想法?