Mam tę formę:

<div id='relationship_<%= relationship.id %>'>
  <% @value_id = "value_#{relationship.id}" %>
  <% @div_slider_id = "slider_value_#{relationship.id}" %>
  <% @form = "edit_relationship_#{relationship.id}"%>
  <%= form_for(relationship, :remote => true) do |f| %>
    <div id="<%= @div_slider_id %>"></div>
    <%= f.hidden_field :value, :id => "#{@value_id}" %>
  <% end %>
</div>

<script type='text/javascript'>
$(document).ready( function() {
  $(function() {
    $( "#<%= @div_slider_id %>" ).slider({
      orientation: "horizontal",
      range: "min",
      value: <%= relationship.value || 1 %>,
      min: 0,
      max: 100,
      change: function( event, ui ) {
        $( "#<%= @value_id %>" ).val( ui.value );

Jeśli użytkownik przesunie suwak, formularz jest wysyłany jako HTML, a nie JS

        $("#<%= @form %>").submit();
      }
    });
    $( "#<%= @value_id %>" ).val( $( "#<%= @div_slider_id %>" ).slider( "value" ) );
  });
});
</script>

Jak wysłałem tę formę w formacie JS, gdy przesuwam suwak?

Dzięki

2
wachichornia 1 sierpień 2012, 19:05

2 odpowiedzi

Najlepsza odpowiedź

Dodaj identyfikator do przesyłania formularza:

<%= f.submit 'Ready', :id => "button_submit" %>

Następnie w JS zamiast tego:

$("#<%= @form %>").submit();

Zrobić

$("#buttom_submit").click();

Lub: Spróbuj dodać typ danych do deklaracji formularza:

<%= form_for(relationship, :remote => true, :html => { "data-type" => :js } ) do |f| %>
2
Anthony Alberto 2 sierpień 2012, 12:35
  1. Ustaw identyfikator relacji_form do utworzenia

2. Zmień tę linię w swoim kodzie:

$("#<%= @form %>").submit();

Do

$js.post("/relationship.js", $js("#relationship_form").serialize());
0
ddb 1 sierpień 2012, 16:43