1

我正在使用回形针来存储名为“费用”的记录的图像——图像是费用的收据。

一切正常,但是当我去编辑费用时,我想要一个链接来删除与该费用关联的图像,所以在我的费用控制器中,我有:

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 请求来自哪里!想法?

4

0 回答 0