在显示注释之前,Ruby on rails无法显示注释表单

时间:2014-07-18 11:48:23

标签: ruby-on-rails ruby forms

我对我的帖子有评论,我可以先显示我的评论,然后写下评论表格,但不能先显示我的表格,然后再评论。我很确定原因是.build:

<%= form_for([@question, @question.replies.build]) do |f| %>

因此,在此表单中,您只需输入注释正文并单击“提交”。

显示的数据是:评论者(评论的用户),评论正文和created_at。

我得到的错误是:

undefined method `first_name' for nil:NilClass

,提取的来源是:

          <%= render @question.replies%>
   <% @question.replies.each do |reply| %>
       <div class="reply">
         <p><%= link_to reply.user.first_name, user_profile_path(reply.user) %> says:</p>
         <p><%= reply.body %></p>
         <p>Answered <%= time_ago_in_words(reply.created_at) %> ago</p>
         <% if current_user==reply.user %>

2 个答案:

答案 0 :(得分:0)

你应该有某种@current_user吗?

所以尝试做这样的事情

<%= form_for([@question, @question.replies.build.tap{|a| a.user = @current_user}]) do |f| %>

问题是您使用form_for构建的注释具有零用户值。

答案 1 :(得分:0)

解决方法是在显示任何内容之前必须检查答复是否为零。

<% @question.replies.each do |reply| %>
    <% unless reply.user.nil? %>