我是新手,所以这是一个新手问题:
如果我有一个控制器users_controller.rb
,我添加了一个方法foo
,它不应该创建这个路由吗?
http://www.localhost:3000/users/foo
因为当我这么做的时候,我得到了这个错误:
找不到ID=foo的用户
我当然添加了视图foo.html.erb
编辑:
我在routes.rb
中添加了这段代码,但得到了同样的错误:
resources :users do
get "signup"
end
我是新手,所以这是一个新手问题:
如果我有一个控制器users_controller.rb
,我添加了一个方法foo
,它不应该创建这个路由吗?
http://www.localhost:3000/users/foo
因为当我这么做的时候,我得到了这个错误:
找不到ID=foo的用户
我当然添加了视图foo.html.erb
编辑:
我在routes.rb
中添加了这段代码,但得到了同样的错误:
resources :users do
get "signup"
end
4条答案
按热度按时间5uzkadbs1#
这在rails 3中不会自动工作。你需要加上
到你的路线.rb
你肯定想看看http://guides.rubyonrails.org/routing.html,它很好地解释了路由。
hzbexzde2#
Rails会将您引导到show控制器,并认为您正在为show操作提供foo as:id参数。
您需要在users#show中设置一个路由,该路由将在被匹配为/users/:id之前被调度
您可以通过添加以下内容来修改
config/routes.rb
,以替换现有的描述:users
的资源,从而实现此目的new9mtju3#
再补充一下,在早期版本的Rails中,
它给出了你所描述的行为,其中形式为 * 控制器/动作 * 的请求将调用给定控制器上的给定方法。这一行仍然在
routes.rb
中,但默认情况下被注解掉了。您可以取消注解以启用此行为,但上面的注解解释了为什么不建议这样做:uinbv5nw4#
在模式
':controller/:action(.:format)'
中,您还可以轻松地执行以下操作或
http://guides.rubyonrails.org/routing.html#adding-collection-routes