没有路由匹配[POST]错误Ruby on Rails

时间:2014-01-22 00:53:45

标签: ruby-on-rails routing

我想通过按钮触发一个方法,但我有一点点的问题。

这是我的观看代码:

   <% @orders.each do |order| %>
     <% if order.confirm == true %>
     <tr class="confirmed">
       <% else %>
     <tr class="not_confirmed">
     <% end %> 
       <td><%= order.name %></td>
       <td><%= order.address %></td>
       <td><%= order.email %></td>
       <td><%= order.pay_type %></td>
       <td><%= link_to 'Show', order %></td>
       <td><%= link_to 'Edit', edit_order_path(order) %></td>
       <td><%= button_to "Confirm payment", :controller => :orders, :action => :confirm  %></td>

这是控制器的方法定义:

def confirm
    @order = Order.find(params[:id])
    @order.confirm = true
end

来自routes.rb:

resources :orders do
    put :confirm, :on => :collection
end

当我按下按钮时,我没有路线匹配[POST]“/ orders / confirm”错误

另外我从rake:routes

粘贴屏幕

enter image description here

1 个答案:

答案 0 :(得分:0)

观看http verbs POST和PUT请求之间存在差异。 在您的路线中,您可以定义PUT路线。你的请求是POST - 这就是为什么它不起作用。

如果你想留在PUT,试试这个:

<%= button_to "Confirm payment", :controller => :orders, :action => :confirm, :method => :put  %>