Rails路由控制器的函数查询

时间:2010-05-13 07:40:28

标签: ruby-on-rails routes

所以我有一个用户控制器,它有(其中包括)一个叫做细节的功能。

想法是用户可以去 本地主机: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?

谢谢!

3 个答案:

答案 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_param1st example2nd example3rd 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'