在Rails电子商务Web应用程序上评论ruby时出现错误400

时间:2019-01-04 12:08:12

标签: ruby-on-rails ruby

我实际上正在制作一个具有UserCategoryBookComment模型的电子商务Web应用程序。一切工作正常,但是当我尝试在其中一本书中发表评论时,出现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

错误提示

This is a pictures showing the error message

2 个答案:

答案 0 :(得分:2)

您提到的错误与以下事实有关:在CommentController中的第9行和第14行,您有一个特殊的不可见字符(不间断空格)。这就是为什么您获得

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

当您同时按下空格键(在MacOS上为cmd +空格键)的同时按下其他键时,通常会发生这种情况。删除这些空行,然后再次输入Enter键以清除字符。

然后另一个答案是正确的,您必须更新书的变量名称。

答案 1 :(得分:0)

当变量是本地@book时,您已引用book。在第6行的开头使用@

  

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