在Rails 3中使用用户名绘制路径w / devise

时间:2010-12-22 23:04:51

标签: ruby-on-rails routes devise ruby-on-rails-3

鉴于使用设计管理的用户与“事物”之间的一对多关系,我的目标是绘制宁静的路线,如:

http://host/username
http://host/username/things
http://host/username/things/1
...

我知道Rails路由中有nested resources,但我无法弄清楚如何将它应用于通过设计创建和管理的通用用户模型。

2 个答案:

答案 0 :(得分:13)

您可以使用scope

scope ":username", :as => "user" do
  resources :things
end

在用户模型上将其与to_param结合使用:

def to_param
  username
end

您将拥有/username/things等路线。但请注意,用户名不应包含任何点,正斜杠或标准URI字符。您可能想在parameterize的末尾放一个username以确保。

答案 1 :(得分:0)

您也可以使用resource :user, path: ':id' do ... end

另外,请不要忘记在用户模式中定义to_param&在控制器中使用User.find_by_username(params[:id])