Ruby on rails 在RAILS中由单个用户显示所有文章
我是rails的新手,我正在尝试在我的应用程序中显示一个用户的所有帖子。我在这个论坛上也看到过类似的帖子,但没有成功。我对名称、标题和内容属性进行了一些搭建,然后创建了一个名为Blogger的模型,该模型具有“name”属性 这是我的密码 控制器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
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