2016-12-14 34 views
-1

我有一個jQuery Bootstrap星級評分(http://plugins.krajee.com/star-rating)。我被卡住,試圖傳遞值到Rails form_for。我不知道如何提交從腳本獲得的價值的形式。如何從jQuery中觸發form_for提交(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'); 

是這樣做的rails方式。