显示在轨某些用户的博客文章(Show certain user's blog posts i

2019-09-21 02:15发布

好了,开始学习轨道,当然写个人博客服务(类似的LiveJournal)开始。 我的帖子支架和用户模型(感谢制定)。 现在,我试图表现出与类似/ url中的用户名/职位某些用户的所有职位,但实在无法理解如何让这个轨道路。 在路线已经取得嵌套资源

resources :users do 
  resources :posts 
end

和连接用户和后型号

has_many :posts

belongs_to :user

我应该创建控制器,便于用户或不? 对此有任何适当的方式?

PS感谢您的回答。 试图研究轨道,但几乎所有的教程中,我发现了脚手架结束,这不是非常有帮助。

编辑1:多亏了“匹配”的想法,我解决了问题的一半。 另一个(未解决)一半选择的帖子写入由某些用户

编辑2:添加

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

要控制,但我必须在岗位控制器“未定义的方法`帖”的错误。

Answer 1:

当您使用where你的对象从查询,而不是单个对象的数组。
也正因为如此,你不具备posts上你的方法@user变量。
也许你应该改变这样的事情,只能检索到一个user

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

这样,你只有一个user查询,并可以使用.posts relashionship没有错误。



Answer 2:

当使用

resources :users do
   resources :posts 
end

你最终将不得不像“/用户/ 1 /帖”网址

首先要有用户名在ID的情况下,你需要写

def to_param
  self.username 
end

在您的用户模型。

或者,如果你不想让你的网址是/用户/:ID /职位,你可以创建一个使用匹配的路由网址

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

这将带你到岗位控制器和表演动作。



文章来源: Show certain user's blog posts in rails