在rails中显示某些用户的博客post

好吧,开始学习rails,当然首先是通过个人博客(类似livejournal)编写服务。 我有post脚手架和用户模型(感谢Devise)。 现在我试图用某个用户显示所有post,例如/ username / posts在url中,但实际上无法理解如何制作这种rails-way。 已经在路由中创建了嵌套资源

resources :users do resources :posts end 

和连接的用户和post模型

 has_many :posts 

 belongs_to :user 

我应该为用户创建控制器吗? 有没有正确的方法呢?

PS谢谢你的回答。 试图研究rails,但几乎每个我发现的教程都以脚手架结束,这不是很有用。

编辑1:由于“匹配”的想法,我解决了一半的问题。 另一个(未解决的)一半是选择由某个用户写的post

编辑2:添加

 @user = User.where(:username => params[:username]) @posts = @user.posts 

对于控制器,但我在post控制器中有“未定义的方法`post’”错误。

当您使用从查询中获取对象数组的位置时,而不是单个对象。
因此,您的@user变量上没有posts方法。
也许你应该改成这样的东西,只检索一个user

 @user = User.find_by_username(params[:username]) 

这样,您只能查询一个user并且可以使用.posts relashionship而不会出现错误。

使用时

 resources :users do resources :posts end 

你会得到像’/ users / 1 / posts’这样的url

首先要有id的情况下你需要写的用户名

 def to_param self.username end 

在您的用户模型中。

或者,如果您不希望您的url为/ users /:id / posts,则可以使用匹配创建路由url

 match ':username/posts' ,'posts#show' 

这将带你到岗位控制器和显示行动。