Комментарии не отображаются из предоставленной формы - PullRequest
0 голосов
/ 17 апреля 2019

Я новичок в Ruby и пытаюсь отобразить комментарии на своей странице показа, но когда я создаю комментарий, он не отображается. Я сделал частичную на моей странице показа, чтобы отобразить комментарии, но они не появляются.

Странно то, что действие create работает, но оно приводит меня на эту страницу: http://localhost:3000/hairstyles/2/comments, на которой ничего нет (в моем приложении эта страница находится в представлении> 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 %>

Форма комментариев Я выполняю рендеринг, который работает и отображается: просмотры> комментарии> _form.html.erb

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

Содержимое комментариев, которое я отображаю, которое не отображается после добавления комментария к моей прическе на странице шоу:

вид> комментарии> _show.html.erb

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

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Вы никогда не связываете свой комментарий с вашей прической, ваш hairstyle_id из вашего комментария nil, поэтому @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
0 голосов
/ 17 апреля 2019

Поведение контроллеров rails по умолчанию - оно перенаправляет на страницу индекса после метода create.вот почему вы перенаправлены на этот путь.

вы можете просто использовать 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...