RoR没有路线匹配

时间:2011-08-02 15:31:47

标签: ruby-on-rails-3 methods

我的路线中有这个代码:

   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="&#x2713;" /><input name="_method" type="hidden" value="put" />

1 个答案:

答案 0 :(得分:0)

:方法属于“options”哈希,这是form_tag的第二个参数,而不是第一个。

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag

请检查该标签生成的html并在此处发布。