joe*_*lis 40 routing ruby-on-rails ruby-on-rails-3
使用Ruby on Rails 3的新路由系统,是否可以更改default:id参数
resources :users, :key => :username
Run Code Online (Sandbox Code Playgroud)
出来以下路线
/users/new
/users/:username
/users/:username/edit
...etc
Run Code Online (Sandbox Code Playgroud)
我问,因为虽然上面的例子很简单,但在我正在进行的当前项目中做真的很有帮助.
是否可以更改此参数,如果没有,是否有特定原因为什么不?
小智 64
在您的路线中,您可以使用
resources :user, param: :username
Run Code Online (Sandbox Code Playgroud)
Mat*_*att 26
对于Ruby on Rails的4.1.4(甚至更早的版本),你需要做什么都 Ĵ..和Ujjwal建议:
1)在config/routes.rb,添加:
resources :user, param: :username
Run Code Online (Sandbox Code Playgroud)
2)在app/models/user.rb,添加:
def to_param
username
end
Run Code Online (Sandbox Code Playgroud)
在你只做#1然后你的所有路线都是正确的,从rake routes以下可以看出:
$ rake routes
Prefix Verb URI Pattern Controller#Action
user_index GET /user(.:format) user#index
POST /user(.:format) user#create
new_user GET /user/new(.:format) user#new
edit_user GET /user/:username/edit(.:format) user#edit
user GET /user/:username(.:format) user#show
PATCH /user/:username(.:format) user#update
PUT /user/:username(.:format) user#update
DELETE /user/:username(.:format) user#destroy
Run Code Online (Sandbox Code Playgroud)
然而,基于User实例构造url的辅助方法仍然包括idurl中的url,例如/user/1.要获得username构建的URL,您需要覆盖to_param#2中的内容.
| 归档时间: |
|
| 查看次数: |
26800 次 |
| 最近记录: |