【问题标题】:Cannot get historical comments to display in a view file无法获取历史评论以显示在视图文件中
【发布时间】:2014-11-04 15:27:38
【问题描述】:

我正在尝试将 cmets 表单添加到博客文章中,并显示历史 cmets。我创建了两个部分。我可以在posts/show视图中看到评论表单,我可以离开cmets,并且将cmets添加到数据库中,但是那些cmets是 不显示

如何才能显示这些历史 cmets?

这是我的相关文件/摘录:

app/views/posts/show.html.erb

<%= render partial: '/comments/comment', locals: { comments: @comments}  %> 

<%= render partial: '/comments/form', locals: { comment: @comment } %>

app/views/cmets/_comment.html.erb

<% comments.each do |comment| %>
  <%= comment.body + " " + comment.user.name %>
<% end %>

app/views/cmets/_form.html.erb

<%= form_for [@post, comment] do |f| %> 
  <%= f.label :body %>
  <%= f.text_area :body %>

  <%= f.submit "Save" %>
<% end %>

app/controllers/posts_controller.rb

def show
  @topic = Topic.find(params[:topic_id])
  @post = Post.find(params[:id])
  @comments = @post.comments
  @comment = Comment.new
end

app/controllers/cmets_controller.rb

def create
  @post = Post.find(params[:post_id])
  @topic = @post.topic
  @comment = current_user.comments.new(comment_params)
  @comment.post = @post
  if @comment.save
    redirect_to [@topic, @post], notice: "Comment was saved successfully."
  else
    flash[:error] = "Error creating comment.  Please try again."
    render :new
  end 
end

谢谢。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    据我所知,如果您确定 cmet 的创建正确(并与正确的帖子相关联),那么主要有两种可能性:

    1. 渲染局部的方式有问题。惯例是去掉前面的/,我认为它可能会导致错误的路径(所以comments/comment)。也就是说,我认为如果它没有找到文件会引发错误,而不是保持沉默。

    2. 有某种样式或条件逻辑隐藏了部分。是否存在可能是错误的条件? display: none 有什么原因吗?

    @cmets 变量可能实例化不正确,但在我看来它是合理的。您可以通过将此行添加到显示视图的顶部并查看打印的内容来测试它:

    &lt;%= @comments %&gt;

    如果打印了一堆 cmets,那么我会删除该行,看看当您在部分内部添加 &lt;%= comments %&gt; 时会发生什么。缩小问题范围,直到你看到它在哪里——因为当我仔细查看上面的代码时,我觉得它很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-11
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      相关资源
      最近更新 更多