我的路线中有这个代码:
controller :active_car do
put 'switch_car' => :update
get 'switch_car' => :edit
end
这是我的编辑页面上的代码。
<% form_tag('switch_car', :method => :put) do%>
<div class="field">
<label for="car_info_id">Car Name:</label>
<%= select("", "car_info_id", @available_cars.collect {|v| [v.name, v.id]})%>
</div>
<div>
<%= submit_tag "Switch Car" %>
</div>
<% end %>
当我点击提交时,我收到以下路由错误。
没有路由将“/ switch_car”与指向http://localhost:3000/switch_car?method=put
的网址匹配get工作得很好,因为我用switch_car结束了网址我得到了我的页面进行编辑。由于某种原因,put定义无效。
将方法更改为第二个参数后,它才起作用。它似乎有发布作为方法仍然而不是放。这是生成的HTML
<form accept-charset="UTF-8" action="switch_car" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="_method" type="hidden" value="put" />
答案 0 :(得分:0)
:方法属于“options”哈希,这是form_tag的第二个参数,而不是第一个。
http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag
请检查该标签生成的html并在此处发布。