路由不适用于form_tag帮助程序

时间:2011-01-17 19:52:14

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

我是一个Rails 3新手所以我必须做一些愚蠢的事情,因为几乎所有的路线都没有使用form_tag助手。我把它分解为最简单的例子:

<%= form_tag(choose_devices) do %>
<% end %>

Rake路线显示路线:

choose_devices POST   /account/devices/choose(.:format)
{:action=>"choose", :controller=>"devices"}

我在尝试加载页面时遇到的错误是:

undefined local variable or method `choose_devices' for
#<#<Class:0x00000100d8e270>:0x00000100d7efa0>

我尝试了各种路线进行测试,它似乎只适用于这个:

user_session POST   /users/sign_in(.:format)
{:action=>"create", :controller=>"devise/sessions"}

我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

choose_devices是您指定的路线。 Rails会自动为每个命名路由生成两个方法作为路由助手。它们总是按以下约定命名:

named_route_path
named_route_url

您可以使用其中任何一种(尽管通常鼓励使用路径)。使用choose_devices_path将返回/account/devices/choosechoose_devices_url将返回localhost:3333/account/devices/choose之类的内容,或者如果您未在配置文件中正确设置主机,则实际上可能会出错(它很长自从我明确使用_url命名的路由助手以来的时间,因此不确定该部分。)

您还可以在rails routing guide.

专门阅读这些内容

答案 1 :(得分:1)

您需要附加_path ie。

choose_devices_path