だから私はチュートリアルに従っていて、クラウド 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をインストールしたと確信しています。他のコードを表示する必要がある場合は、私に連絡してください。すべての助けに感謝します!