Rails button_to失败,对于存在的路径,路径不存在

时间:2011-03-07 15:06:41

标签: ruby-on-rails ruby-on-rails-3 routes

编写我的第一个非常简单的Rails应用程序,一个简单的管理应用程序来跟踪我们某个部门的工作。为人们生成的索引页面上有一个link_to来添加新人。我试图将其更改为button_to并且它无法说路径/ people / new不存在,但显然它确实是因为link_to转到同一个地方。

我正在使用Rails 3 / Ruby 1.9.2。我在/app/views/people/index.html.erb页面上有这个代码:

<%= link_to 'New Person', new_person_path %>
<%= button_to "New", :controller => "people", :action => "new" %>

link_to有效。 button_to失败了:

路由错误 没有路线匹配“/ people / new”

也尝试了

<%= button_to 'New Person', new_person_path %>

同样的错误。奇

4 个答案:

答案 0 :(得分:9)

button_to默认使用post方法。尝试将:method => :get放在那里。这就是link_to有效的原因。

答案 1 :(得分:3)

对此有一个很好的解释,一如既往:)

link_to使用GET作为默认值,其中button_to使用POST。并且没有匹配的POST路由,只有GET路由。

如果您想使用button_to,可以将:method => :get添加到按钮参数,它将使用GET。

答案 2 :(得分:0)

您是否在config / routes.rb中设置了路由选项?检查您的routes.rb文件中是否包含此内容:

resources :people

检查此guide以获取有关路线如何工作的更多信息。

答案 3 :(得分:0)

你的button_to是否在表格内? button_to创建了自己的表单,因此这将在表单中创建一个表单,并可能会中断路由。