我想通过按钮触发一个方法,但我有一点点的问题。
这是我的观看代码:
<% @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
粘贴屏幕
答案 0 :(得分:0)
观看http verbs POST和PUT请求之间存在差异。 在您的路线中,您可以定义PUT路线。你的请求是POST - 这就是为什么它不起作用。
如果你想留在PUT,试试这个:
<%= button_to "Confirm payment", :controller => :orders, :action => :confirm, :method => :put %>