Ruby on rails 在RAILS中由单个用户显示所有文章

Ruby on rails 在RAILS中由单个用户显示所有文章,ruby-on-rails,Ruby On Rails,我是rails的新手,我正在尝试在我的应用程序中显示一个用户的所有帖子。我在这个论坛上也看到过类似的帖子,但没有成功。我对名称、标题和内容属性进行了一些搭建,然后创建了一个名为Blogger的模型,该模型具有“name”属性 这是我的密码 控制器 class BloggersController < ApplicationController def show @blogger = blogger.find(params[:id]) @title = @blogger

我是rails的新手,我正在尝试在我的应用程序中显示一个用户的所有帖子。我在这个论坛上也看到过类似的帖子,但没有成功。我对名称、标题和内容属性进行了一些搭建,然后创建了一个名为Blogger的模型,该模型具有“name”属性

这是我的密码

控制器

class BloggersController < ApplicationController

  def show
    @blogger = blogger.find(params[:id])
    @title = @blogger.name
    @posts = @blogger.posts
    respond_with(@posts)
  end
end
class BloggersController
看法

Index.html.erb
post.name
#对《华盛顿邮报》的评论
post.comments.each do| comment|
评论
模型

class Posttrue
验证:title,:presence=>true
有很多评论
属于:博主
属于:主题,:touch=>true
接受:blogger的\u嵌套\u属性\u
可访问属性:名称、标题、内容
结束
我发现一个“帖子中的命名错误#索引”错误


nil:NilClass的未定义方法'post',在提取的源代码中有index.htm.erb的代码

,可能是因为您将此代码放在index.html.erb中了 因此,当您尝试显示此HTML页面时,rails将尝试调用控制器中的方法索引,但您没有任何称为index的方法。 尝试将此代码放入名为index/的方法中,或者尝试将html.erb文件的名称更改为show.html.erb

编辑:因此,在代码中传递@posts变量,但在视图中调用@blogger.post。
这是不应该解决的。您必须在将@blogger或@posts传递到视图中进行选择,并且只使用传递到视图的变量的属性。

答案不是,只是一些指导原则:

你的问题代码中有很多错误

@blogger = blogger.find(params[:id])
我认为应该改成

@blogger = Blogger.find(params[:id])
下一步做一个决定

raise @blogger.inspect
看看它是否已加载

在您看来,您可以在以下方面做得更好: (顺便说一句:如果您有show方法,则需要将其称为show.html.erb而不是index.html.erb)

#显示html.erb
然后在posts/_post.html.erb中创建一个文件

<%= post.name %>
<%= render post.comments %>

以及一个文件
comments/_comment.html.erb
,您可以在其中呈现注释


这是干燥的好方法

您要查找的错误是一个简单的打字错误,在您看来,您应该

@blogger.posts.each
而不是

@blogger.post.each

希望这能有所帮助。

你的
Blogger
课上有什么内容?非常重要,因为您试图从这个模型中获取帖子:>一个称为blogger“name”的字符串。每个博主都可以创建多个帖子。我想列出当我点击一个博主的名字时他写的所有文章。感谢您的帮助您的整个班级
Blogger
是一个名为
name
的字符串?不确定这是否正确,因为您引用了
blogger.name
blogger.posts
<%= post.name %>
<%= render post.comments %>
@blogger.posts.each
@blogger.post.each