2016-12-14 11 views
-1

私はjQueryブートストラップの星評価(http://plugins.krajee.com/star-rating)を持っています。私はそれがRailsのform_forに渡す価値を渡そうとしている。私はスクリプトから得られた価値のあるフォームを提出する方法を知らない。フォームの送信をトリガすべきjQueryからform_for submit(rails)をトリガーする方法は?

<%= form_for @book.reader_books.build, id: "my-form", :html=> {:id => 'my-form'} do |f| %> 
    <%= f.hidden_field :book_id, value: @book.id, :id=>"rating_field" %>  
     <div class="col-md-6 ratings"> 
     <div align="center"><%= @book.rating_average.to_i %></div> 
     <input id="input-id" name="input-id"> 
     </div> 
    <% end %> 
    <% else %> 
    <strong>Your rate:</strong> 
    <%= @book.reader_books.find_by!(reader: current_reader).rating %> 

スクリプト:

<script type="text/javascript"> 
    $('#input-id').rating().on('rating.change', function(event, value, caption) { 
     console.log(value); 
     $("#rating_field").val(value); 
     $("#my-form").submit(); 
    }); 
</script> 

console.log(value); - データが入力された場合にだけチェックします。 $("#rating_field").val(value); - valueをフィールドに割り当てます。 $("#my-form").submit(); - 送信をトリガーします。

ありがとうございます!

答えて

1
$('#input-id').rating().on('rating.change', function(event, value, caption) { 
    // traversing up the DOM is faster and avoids hardcoding an ID. 
    var $form = $(event.target).parents('form'); 
    // You can get inputs by name from a form element without querying the DOM. 
    $form[0]["reader_book[book_id]"].value = value; 
    $form.submit(); 
}); 
3

$("#my-form").submit();を行うと、リモートからフォームを送信しません。代わりにフルリフレッシュが発生します

$("#my-form").trigger('submit.rails'); 

はそれを行う方法です。

関連する問題