Комментарии маршрута в Rails 5.1 - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь создать Комментарии на созданные пользователем Статьи в Rails 5.1.После того, как комментарий отправлен, перенаправление должно быть на «/ article /: id», но вместо этого оно перенаправляет на «/ article /: id / comments».

Я использую вложенную маршрутизацию в маршрутах.erb:

<!--Start of comments-->
<div class="col-md-12">
  <%= form_for [@article, @comment],
               :html => {class: "form-horizontal", role: "form"} do 
                  |f| %>
    <% if @comment.errors.any? %>
     <div class="panel panel-danger col-md-offset-1">
       <div class="panel-heading">
         <h2 class="panel-title">
           <%= pluralize(@comment.error.count, "error") %>
           prohibited this comment from being saved:
         </h2>
         <div class="panel-body">
          <ul>
            <% @comment.errors.full_messages.each do |msg| %>
              <li><%= msg %></li>
            <% end %>
          </ul>
         </div>
       </div>
     </div>
    <% end %>

    <div class="form-group">
      <div class="control-label col-md-2">
        <%= f.label :body, 'New Comment' %>
      </div>
      <div class="col-md-10">
       <%= f.text_area :body, rows: 10, class: "form-control", placeholder: "New Comment" %>
      </div>
    </div>

    <div class="form-group">
      <div class="col-md-offset-2 col-md-10">
        <%= f.submit "Add Comment", class: "btn btn-primary btn-lg pull-right" %>
      </div>
    </div>

  <% end %>
</div>

Как сделать так, чтобы эта кнопка отправки сохранялась и перенаправлялась обратно в «article /: id»?Заранее спасибо.

1 Ответ

0 голосов
/ 09 июня 2018

Маршруты, сгенерированные в вашем роутере, будут выглядеть примерно так:

/articles/:article_id/comments/:id

Это означает, что когда вам нужно загрузить статью в CommentsController, вы должны сделать что-то вроде этого (как предложено @Марлин):

def set_article
  @article = Article.find(params[:article_id])
end

В противном случае вы рискуете прикрепить комментарий к неправильной статье, если случится конфликт идентификаторов между идентификаторами в комментариях и таблице статей.Или вы просто получаете ошибку ActiveRecord::RecordNotFound.

Но я знаю, что это не отвечает на ваш вопрос напрямую, но я подозреваю, что проблема в том, что вы загружаете неправильную запись из БД где-то, потому что

Попробуйте обновить код и напишите тест, чтобы убедиться, что вы можете программно воспроизвести ошибку :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...