0

だから私はチュートリアルに従っていて、クラウド 9 をエディターとして使用しています。プログラムを実行してレビューを送信するとき。Mackenzie (チュートリアルを作成した人) のレビュー フォームでは、視聴者が評価として星を選択できます。一方、私の場合はユーザーが数字を入力することしかできず、平均評価は変わりません。
ここに私の _form.html.erb があります

<%= form_for([@movie, @review]) do |f| %>
  <% if @review.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@review.errors.count, "error") %> prohibited this review from being saved:</h2>

      <ul>
      <% @review.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :rating %><br>
    <%= f.text_field :rating %>
  </div>
  <div class="field">
    <%= f.label :comment %><br>
    <%= f.text_area :comment %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

<script>
  $('#star-rating').raty({
    path: '/assets/',
    scoreName: 'review[rating]'
  });
</script>


そして私のレビューコントローラー:

class ReviewsController < ApplicationController
  before_action :set_review, only: [:show, :edit, :update, :destroy]
  before_action :set_movie
  before_action :authenticate_user!

  def new
    @review = Review.new
  end

  def edit
  end

  def create
    @review = Review.new(review_params)
    @review.user_id = current_user.id
    @review.movie_id = @movie.id

    if @review.save
      redirect_to @movie
    else
      render 'new'
    end
  end

  def update
    @review.update(review_params)
  end

  def destroy
    @review.destroy
    redirect_to root_path
  end

  private
    def set_review
      @review = Review.find(params[:id])
    end

    def set_movie
      @movie = Movie.find(params[:movie_id])
    end

    def review_params
      params.require(:review).permit(:rating, :comment)
    end
end


私は正しくrateをインストールしたと確信しています。他のコードを表示する必要がある場合は、私に連絡してください。すべての助けに感謝します!

4

0 に答える 0