psh*_*rma 2 ruby-on-rails rails-routing ruby-on-rails-3
现在,我的网址被渲染为
/users/2/products
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用friendly_id将其渲染为
/users/username/products
Run Code Online (Sandbox Code Playgroud)
但我不想那样.在我的数据库中User,有一个字段role,其条目如 - worker,janitor等等.所以,我想拥有
/users/2/products
Run Code Online (Sandbox Code Playgroud)
如
/worker/username/products or /janitor/username/products and so on..
Run Code Online (Sandbox Code Playgroud)
我该怎么做 ?我可以使用friendly_id来做吗?
我不知道friendly_id.我甚至无法确定你在问什么,但有些东西告诉我你要定义一个自定义路线.
在您的路线文件中,您可以添加
match "/worker/:username/products" => "users#show"
Run Code Online (Sandbox Code Playgroud)
并在操作中,检查:username参数变量.
if params[:username]
@user = User.find_by_name(params[:username])
else
@user = User.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你似乎想在你的route.rb中想要这个:
match "/:role/:username/products" => "users#show"
Run Code Online (Sandbox Code Playgroud)
这是你使用params的行动:
User.where("role = '?' and username = '?', pararms[:role], params[:username])
Run Code Online (Sandbox Code Playgroud)
这条路线将访问像一个URL /worker/fotanus/products/的动作结束了User#show与params[:role] = 'worker'和params[:username] = 'fotanus'.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |