I think this question might end up being more rails generic help, but I am encountering a problem when trying to delete a paperclip item.
When I click my button, I simply get — No route matches [POST] “/expenses/3” — Perhaps this is the wrong way to call a method?
Thanks in advance, code below.
Here is my view button, I just copied my delete button, and changed the controller method to a new one.
<%= 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" %>
and in my controller
def destroy_receipt
@expense = Expense.find(params[:id])
@expense.receipt.destroy
redirect_to expense_path
end
my model
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>" }
You are correct, that is not the correct way to go about it.
The proper arguments to the method: key are POST,GET,PUT,DELETE
You’d want something like:
Then you’d have to have a route in routes.rb:
Then in controllers/yourcontroller.rb
The argument to :method indicates which HTTP VERB to use.
Note that the DEFAULT method is get, so this would also work:
Then you’d have to have a route in routes.rb:
or more commonly