注释未从呈现的表单中显示

时间:2019-04-17 12:02:29

标签: ruby-on-rails ruby

我是Ruby的新手,我试图在显示页面上显示评论,但是当我创建评论时,它不会显示。我已经在我的显示页面上渲染了一部分,以便显示评论,但它们不会出现。

奇怪的是,create动作有效,但它带我到此页面:http://localhost:3000/hairstyles/2/comments上面没有任何内容(在我的应用程序中,此页面位于views> comments> create.html.erb下)想要转到发型的查看页面并显示评论。...

如果有人可以提供帮助,看看我的代码中是否有任何错误,我将不胜感激。预先感谢。

评论控制器:

class CommentsController < ApplicationController
  def new
    @hairstyle = Hairstyle.find(params[:hairstyle_id])
    @comment = Comment.new
  end

  def create
    @comment = Comment.new(comment_params)
    @hairstyle = Hairstyle.find(params[:hairstyle_id])
    @comment.save   

  end

  def destroy
  end
end

  private

  def comment_params
    params.require(:comment).permit(:content)
  end

要在其中显示评论的发型查看页面:

<div class="container">
  <div>
    <%= cl_image_tag @hairstyle.photo, width: 300, height: 200, crop: :fill %>
    <h1><%= @hairstyle.name %></h1>
    <p><%= @hairstyle.description%></p>
    <p><%= @hairstyle.category%></p>
    <p><%= @hairstyle.video_url %></p>
  </div>
</div>
 <div>
    <%= link_to 'Back', hairstyles_path %>
 </div>

<h6>Comments for: <%= @hairstyle.name %> <small><%= %></small></h6>
<h2>
  <%= pluralize @hairstyle.comments.size, "comment" %>
</h2>

<div id="comments">
  <% if @hairstyle.comments.blank? %>
    Be the first to leave a comment for <%= @hairstyle.name %>
  <% else %>
    <% @hairstyle.comments.each do |comment| %>
      <%= render 'comments/show', comment: comment %>
    <% end %>
  <% end %>
</div>

<%= render 'comments/form', comment: @comment %>

我正在渲染的评论表格可以工作并显示: views> comments> _form.html.erb

<div class="flex-box">
  <%= simple_form_for([ @hairstyle, comment ]) do |form| %>
    <%= form.input :content, as: :text %>
    <%= form.button :submit %>
  <% end %>
</div>

注释我正在渲染的内容,一旦在显示页面上为发型添加注释,便不会显示:

views>评论> _show.html.erb

<p><%= comment.content %></p>

2 个答案:

答案 0 :(得分:0)

rails控制器的默认行为是在创建方法之后它将重定向到索引页面。这就是为什么您被重定向到该路径。

您可以像下面这样在注释控制器中的redirec_to方法中简单地使用create

def create
    @comment = Comment.new(comment_params)
    @hairstyle = Hairstyle.find(params[:hairstyle_id])
    @comment.save   
    redirect_to hairstyle_path(@comment.hairstyle)
end

答案 1 :(得分:0)

您永远不会将评论链接到发型,评论中的hairstyle_idnil,这就是@hairstyle.comments返回空数组的原因

def create
  @hairstyle = Hairstyle.find(params[:hairstyle_id])
  @comment = @hairstyle.comments.build(comment_params)
  # equivalent to:
  # comment = Comment.new(comment_params)
  # comment.hairstyle = @hairstyle

  if comment.save
    redirect_to hairstyle_path(@hairstyle)
  else 
    # handle errors
  end
end