Problem:
Member routes allow one to create additional routes to existing resources. For example, if you want to add an approve
path to your purchases
resource, you could do this in your config/routes.rb
:
map.resources :purchases, :member => { :approve => :put }
My problem was that the link I made for approving the purchase
<%= link_to "Approve Purchase", approve_purchase_path(@purchase), :confirm => "Proceed with approval?" %>
resulted in the following error:
Unknown action
No action responded to 1. Actions: approve, create, destroy, edit, index, new, show, and update
Cause:
Rails confused the link with a normal get
operation.
Solution:
Explicitly declare the HTTP method for the action.
<%= link_to "Approve Purchase", approve_purchase_path(@purchase), :confirm => "Proceed with approval?", :method => :put %>