如何从jQuery触发form_for submit(rails)?

时间:2016-12-14 09:47:52

标签: jquery ruby-on-rails forms twitter-bootstrap

我有一个jQuery Bootstrap星级评分(http://plugins.krajee.com/star-rating)。我被困在试图将值传递给Rails form_for。我不知道如何提交带有从脚本中获取的价值的表格。

<%= 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(); - 触发提交。

提前致谢!

3 个答案:

答案 0 :(得分:3)

执行$("#my-form").submit(); 不会远程提交表单。相反,将发生完全刷新

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

是实现目标的方式。

答案 1 :(得分: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();
});

答案 2 :(得分:0)

我通过使用提交按钮上的click()函数 而不是表单来使它工作。

$('input[type="submit"]').click();

$('#submit-button').click();