2011-08-01 29 views
0

我想说明后与我的Rails应用程序发布者的信息一起信息。现在我可以在“显示”页面(单个帖子的页面)上显示帖子和用户关联,但是当我想在“索引”页面上显示它时(我的所有帖子都是这样),我得到这个错误:无未定义的方法`用户名”:NilClass显示帖子+海报对“索引”页

我加@ post.user = CURRENT_USER我post_controller下‘秀’(这让我展示海报的信息,但我不。知道如何添加到“DEF指数”

这是我有:

def index 
    @posts = Post.all 
    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @posts } 
    end 
    end 

这是我有“作秀”下

def show 
    @post = Post.find(params[:id]) 
    @post.user = current_user 
    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @post } 
    end 
    end 

我想知道如何添加到我的高清指数能够显示海报的信息。提前致谢。

+0

从显示行(大概是你的查看)错误消息指向的内容。 – Gareth

回答

2

您的设置是错误的。用户需要在创建和更新时添加到帖子中。 正如你现在拥有它,所有的帖子永远属于当前观察,因为如果你用这种持续的你分配CURRENT_USER在表演动作后(并会做同样的索引视图后用户方法),这意味着,当支柱1通过用户1观看它会显示为属于用户1。当支柱1通过用户2中所示,将属于用户2

解决方案是将分配当前用户到发布更新并创建帖子控制器的动作,就像您现在在show动作中一样,但是在帖子被物理更新或创建之前。

然后取出从展会的行动@ post.user = CURRENT_USER。 这可能意味着您的应用程序中遗留的数据没有分配给用户。但是,这只是编辑和保存每篇文章,它会让你自动附加。

然后在视图/职位/ index_html.erb只想补充一点,要在显示/编辑链接前新表行列,以了解用户的详细信息。这假设你有一个标准的脚手架index.html.erb文件。如果你没有标准的索引视图,然后把它放在任何你想要的地方,但是如果你有一个自定义的索引视图,你可能不会首先问这个问题,所以忘了这一点,你会知道它在哪里去

更新

我没有解释如何显示视图,用户在我上面的响应,但可能我需要一个更清晰一点,所以我会告诉你的代码。 要在放映视图显示用户名使用

<%= @post.user.name unless @product.user.blank? %> 

要显示在索引操作的用户在使用后

<% @posts.each do |post| %> <!-- This is already in your index action. --> 
    <%=post.user.name unless post.user.blank?%><!-- This is the code you need --> 
    <!-- You might want to add a new th in the header for the css table then you can add a <td></td> tags round the above line so your table all matches up nicely for display purposes--> 
<%end%> <!-- This is already in your index action --> 

希望帮助

+0

嗨。我有 DEF创建 @post = Post.new(PARAMS [:交]) \t @post。用户= CURRENT_USER @ post.save 高清更新 @post = Post.find(PARAMS [:编号]) \t @ post.user = CURRENT_USER 显示我加上 “@ post.save” 我def更新? 另外,如果我拿出“@ post.user = CURRENT_USER ”从高清显示我得到这个错误: 的零未定义的方法'用户名”:NilClass 我不知道该怎么添加到书房索引,因为权现在我得到相同的未定义的方法错误。 – ChrisBedoya

+0

刚刚注意到你的意思。如果我使用另一个帐户登录,那么该帐户将显示在“发布者张贴”下。 – ChrisBedoya

+0

克里斯。您不会向索引操作或显示操作添加任何内容。在索引和显示操作中,您都需要删除用户分配。我会更新我的答案显示查看代码 – jamesc