2011-07-13 206 views
1

在我的应用程序中,用户有消息。在Rails 3中路由嵌套资源

resources :users do 
    resources :messages 
end 

用户可以使用漂亮的网址访问他们的个人资料,例如/ albert。

match ':username' => 'users#show', :as => 'username' 

但不是他们的消息!

user_message_path(@user, 1) 

returns/users/1/messages/1。我如何得到它返回/ albert/messages/1?

回答

1

在你的路由添加:

get ':username/messages/:id' => 'messages#show', :as => 'username_message' 

访问,使用username_message_path

+0

感谢,但有没有这样做的一个比较通用的方法是什么?我们不得不为每个嵌套资源添加该行,这将成为立方体 – alste

+0

以及每个嵌套资源的每个动作... – alste

+0

我鼓励您查看资源方法的定义:http://api.rubyonrails .org/classes/ActionDispatch/Routing/Mapper/Resources.html#method-i-resource(点击显示源)。如果它提供的模式不符合您的喜好,您可以为您的应用程序创建自定义方法。 –