Ошибка 400 при комментировании ruby ​​в веб-приложении электронной коммерции rails - PullRequest
0 голосов
/ 04 января 2019

Я на самом деле создаю веб-приложение для электронной коммерции, которое имеет модели User, Category, Book и Comment.Все работает хорошо, но когда я пытаюсь комментировать в одной из книг, это дает ошибку 400.Мне действительно нужно, чтобы ты мне помог.https://github.com/felixpro/Book-app это мой репозиторий.

Это мой CommentsController

class CommentsController < ApplicationController

  before_action :authenticate_user!

  def create
    book = Book.find(params[:comment][:book_id])
    comment = book.comments.build(comment_params)
    comment.user = current_user
  ​
    if comment.save
      redirect_to book_path(@book)
    end
  end

  private

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

end

Это частичное представление комментария,

<% if signed_in? %>
  <div class="card bg-light new-comment">
    <div class="card-body">
      <p class="font-weight-bold">Deja tu comentario:</p>
      <%= form_for @book.comments.build do |f| %>
        <%= f.hidden_field :book_id, value: @book.id %>
        <div class="form-group">
          <%= f.text_area :body, rows: 4, class: "form-control" %>
        </div>
​
        <div class="text-right">
          <%= f.submit "Comentar", class: "btn btn-primary" %>
        </div>
      <% end %>
    </div>
  </div>
<% else %>
  <div class="card bg-light mt-5">
    <div class="card-body">
      <p class="card-text text-center lead"><%= link_to "Regístrate", new_user_registration_path %> o <%= link_to "Ingresa", new_user_session_path %> para comentar</p>
    </div>
  </div>
<% end %>

Вот маршруты

Rails.application.routes.draw do
  devise_for :users
  root 'books#index'
   resources :books

   resources :comments, only: [:create]

 end

Ошибка сказать

Это изображения, показывающие сообщение об ошибке

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Указанная вами ошибка связана с тем, что у вас есть специальный невидимый символ (неразрывный пробел) в строках 9 и 14 в вашем CommentsController. Вот почему вы получаете

NameError (undefined local variable or method `​' for ...)

Это часто происходит, когда вы нажимаете дополнительную клавишу в то же время, когда нажимаете пробел (cmd + пробел в MacOS). Удалите эти пустые строки и снова введите клавишу ввода, чтобы удалить символ.

Тогда другой ответ правильный, вам придется обновить имя вашей книжной переменной.

0 голосов
/ 04 января 2019

Вы ссылались на @book, когда переменная является локальной book. Используйте @ в начале строки 6:

@book = Book.find(params[:comment][:book_id])

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