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

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

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

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

您可以使用scope

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

将此与用户模型上的to_param结合使用:

 def to_param username end 

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

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

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