アプリに評価システムを実装しようとしています。Rateit を試してみましたが、うまくいかなかったので、自分で構築してみようと思いました。さらに、この方法でプロセスを理解することで、さらに多くのことを学びたいと思っています。
現時点では、クリックした星の値を渡そうとしています
形
<%= form_for @rating do |f| %>
<%= f.hidden_field :ratings, :id => "hiddenRating", :value => '' %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= f.hidden_field :recipe_id, :value => @recipe.id %>
<div class="ratings">
<ul>
<li id="firstStar"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<%= f.submit "Submit" %>
<% end %>
JS
$(document).ready(function(){
$('#firstStar').click(function(){
$('#hiddenRating').value = 1;
});
});
したがって、ユーザーが最初の星をクリックした場合、フォーム内の評価値として 1 の値を渡す必要があります。これは、何を渡すかわからないため発生しません。
:value => ''
これを行うにはもっと良い方法があると確信していますが、私が言ったように、最終的にすべてをまとめることができるように、少しずつ学びたいと思っています。もちろん、誰かがより良い提案を持っている場合はお知らせください.
編集
コントローラ
def new
@rating = Rating.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @rating }
end
end
def create
@rating = Rating.new(params[:rating])
respond_to do |format|
if @rating.save
format.html { redirect_to @rating, notice: 'Rating was successfully created.' }
format.json { render json: @rating, status: :created, location: @rating }
else
format.html { render action: "new" }
format.json { render json: @rating.errors, status: :unprocessable_entity }
end
end
end