it will generate http://localhost:3000/people/1 ," />
开发者

Rails hide controller name

i have match ":id" => "people#show" in my routes.rb now i can access http://localhost:3000/1

but,in views <%= link_to 'Show', people %> it will generate http://localhost:3000/people/1 ,

i want to it to be http://开发者_JAVA技巧localhost:3000/1


You could do something like this to ensure that only numeric ids are matched:

match '/:id' => 'people#show', :constraints => {:id => /\d+/}

A good alternative might be to use some kind of identifier, even if it's not the controller name: http://localhost:3000/p/1. This will at least ensure that if you add other controllers and actions you don't end up having to change your routing structure.


You could write a custom route to match that in config/routes.rb. At the bottom of your routes.rb file you will have a route like match ':controller(/:action(/:id(.:format)))' or something like resources :people. You might have to write a route that matches the route type you want.


You have to create a named route.

match ':id' => 'people#show', :as => :person

And fix your views to use your new method person_path(user_id).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜