所以我有一个用户控制器,它有(其中包括)一个叫做细节的功能。
想法是用户可以去 本地主机:3000 /用户/:USER_ID /细节 并能够查看详细信息:user_id。
例如,我有一个名为“tester”的用户。
当我去uri时:http://localhost:3000/users/tester/details
我希望调用详细信息功能,呈现详细信息视图,并显示用户测试人员的信息。
但我得到一个错误说
No action responded to tester. Actions: change_password, create, current_user, details, forgot_password, index, login_required, new, redirect_to_stored, show, and update_attributes
我理解这基本上意味着如果我想访问细节,我应该真的使用
http://localhost:3000/users/details
除此之外不是真的有效...>。<
那就是把我带到http://localhost:3000/users/details/registries
(这是我为任何试图查看users/:user_id
的人规定的默认路径,所以再次按照我想要的方式工作)
重点是:任何人都可以帮助并告诉我如何获得
users/:user_id/details
以我想要的方式工作并显示以下内容的详细信息:user_id?
谢谢!
答案 0 :(得分:2)
您使用的是资源吗?如果您的路线如下:
map.resources :users
你可以做到:
map.resources :users, :member => { :details => :get }
这将允许对URL / users /:id / details
的GET请求此处有更多信息:http://guides.rubyonrails.com/routing.html#customizing-resources
答案 1 :(得分:0)
我认为您的问题在于以这种方式设置路线,而不是:user_id
您在网址:login
而不是/users/tester
中拥有/users/34
(或其他)。您可能需要查看to_param
(1st example,2nd example,3rd example)。
如果你想在路由中有另一个选项(除了默认的REST路由),你可以添加:member => {:details => :get}
如果你正在使用map.resources
(@dylanfm回答)或者只是在@Salil回答中映射它
答案 2 :(得分:-1)
为了获得像“users /:user_id / details”这样的路线,可以在routes.rb中更改以下内容。
map.users 'users/:user_id/details', :controller => 'users', :action=>'details'