提交评论发布一个ActionView :: MissingTemplate

时间:2014-12-13 21:05:01

标签: ruby-on-rails render

我试图将我的评论发布到特定帖子,但我收到了一条缺失的模板评论/评论。我查了一些可能的原因,我认为这与我的评论呈现有关,但我不知道如何修复它。

在我的CommentsController中,我有渲染

class CommentsController < ApplicationController

    def create
        @topic = Topic.find(params[:topic_id])
        @post = Post.find(params[:post_id])
        @comment = current_user.comments.build(comment_params)
        render 'comment'
    end

在视图/评论中也有

<% @comments.each |do| comment %>
    <div class="media">
        <div class"media-body"
            <h4 class="media-heading">
            <ul>
                <li><% render comment %></li>
            </h4>
        </div>
    </div>
<% end %>

我还在视图/ posts / show中包含它我想要评论为每个正在发布的帖子创建一个列表。

<h1><%= markdown @post.title %></h1>

<div class="row"> <!-- what others are there besides row? -->
    <div class="col-md-8">
        <p><%= markdown @post.body %></p>
    </div>
   <div class="col-md-4">
        <% if policy(@post).edit? %>
        <%= link_to "Edit", edit_topic_post_path(@topic, @post), class: 'btn btn-success' %>
    <% end %>
   </div>
   <div class="col-md-8">
        <%= render partial: 'comments/form', locals: { topic: @topic, post: @post, comment: @post.comments.new } %>
        <%= render partial: 'comments/comment', locals: {comment: @comment} %>
    </div>
</div>

我是否错误地命名了渲染?

1 个答案:

答案 0 :(得分:0)

在您的问题的第一部分中,render "comment"语句实际上查找与comment操作关联的视图文件(事实证明,您未在控制器中定义)。

是正确的方法
  1. 创建文件app/views/comments/comment.html
  2. 将控制器中的代码更改为以下

    def创建   #你的逻辑在这里   渲染&#34;评论/评论&#34;   #cocks知道您正在寻找一个文件,而不是使用反斜杠查找与某个操作相关联的视图 端

  3. 关于你问题的第二部分(我可能会误解你的问题),你问为什么以下这些不起作用?

    <%= render partial: 'comments/form' %>
    

    这是因为在render :partial => "controller/partial"中,rails会查找文件app/views/controller/_partial.html.erb而不是键入的内容。

    在您的情况下,可能适合的是创建部分comments/_comments.html.erb并从您的帖子中展示部分内容#show action and comments #create action。