2

アプリに評価システムを実装しようとしています。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
4

1 に答える 1

2

うまくいけば、これは同様の状況で他の誰かを助けるかもしれません.私のフォームは今このようになります

<%= f.hidden_field :ratings, :id => "hiddenRating"%>#Value has been removed

そして、私のJqueryはそのように見えます

$(document).ready(function(){
 $('#firstStar').click(function(){
  $('#hiddenRating').val(1);
 });
});

.val() が値を id に割り当てるため、フォーム内で値を渡す必要はありませんでした。

とにかくそれは私の理解です

于 2013-02-20T13:43:52.263 に答える