我认为这个问题最终可能会成为更多的rails通用帮助,但我在尝试删除回形针项时遇到了问题。
当我点击我的按钮时,我只是得到---没有路线匹配[POST]“/ expenses / 3” - 也许这是调用方法的错误方法?
提前致谢,代码如下。
这是我的视图按钮,我刚刚复制了删除按钮,并将控制器方法更改为新方法。
<%= link_to raw('<i class="icon-trash icon-white"> </i>'),
expense_item, method: :destroy_receipt,
data: { confirm: 'Are you sure delete receipt?' },
class: "btn btn-mini btn-danger" %>
并在我的控制器中
def destroy_receipt
@expense = Expense.find(params[:id])
@expense.receipt.destroy
redirect_to expense_path
end
我的模特
class Expense < ActiveRecord::Base
attr_accessible :amount, :expense_date, :description, :is_billable, :mileage,
:pay_method, :project_id, :type_id, :on_site, :receipt
belongs_to :project, foreign_key: :project_id
belongs_to :expense_type, foreign_key: :type_id
has_attached_file :receipt, :styles => { :medium => "300x300>", :small => "100x100>" }
答案 0 :(得分:1)
你是对的,这不是正确的方法。
方法的正确参数:key是POST,GET,PUT,DELETE
你想要的东西是:
link_to 'hi' , '/urlforhi/:id', :method=>:post
然后你必须在routes.rb中有一条路线:
post '/urlforhi/:id' => 'yourcontroller#hi'
然后在controllers / yourcontroller.rb
中def hi
@thing = Thing.find(params[:id])
end
:method的参数指示要使用的HTTP VERB。
请注意,DEFAULT方法是get,所以这也可以:
link_to 'hi' , '/urlforhi/:id'
然后你必须在routes.rb中有一条路线:
get '/urlforhi/:id' => 'yourcontroller#hi'
或更常见
match '/urlforhi/:id' => 'yourcontroller#hi'