Запуск Ajax-вызова при нажатии кнопки «Отправить» - PullRequest
0 голосов
/ 13 марта 2012

В моем приложении на Rails 3.1 у меня есть диалоговое окно Jquery, которое появляется при нажатии, и внутри у вас есть кнопка отправки. Я сделал несколько попыток сделать эту кнопку «отправить» ajax. Так что при нажатии обновляется время и дата встречи. У меня есть следующий код:

<% if @booking.id and current_user.is_booking_manager? %>
<button id="confirm_appointment">
    test confirmation
</button>
<div style="display:none;">
    <div id="confirm_appointment_dialog" title="Test Confirm Booking">
        <%= form_for @booking, :url => booking_confirmation_path(@booking), :remote => true do |f| %>
        <%= f.hidden_field :id %>
        <%= f.datetime_select :confirmed_appointment %>
        <br />
        <b>Clear provisional appointment:</b><%= check_box_tag "make_unexpected" %>
        <br />
        <%= f.submit :class => 'submit_me' %>
        <% end %>
    </div>
</div>
<% end %> 

application.js

$('.submit_me').bind('change', 
function() {
    $(this).parents('form:first').submit();
}); 

Что-то мне не хватает

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Вы не обновляете свой View после обработки запроса JS. Сначала вам нужно добавить идентификатор к HTML-элементу, который вы хотите обновить.

Ваш Pastie имел этот код:

<tr>
  <td><%= f.label :confirmed_appointment %></td>
  <td> <% f.hidden_field :confirmed_appointment %>
  <% if @booking.confirmed_appointment %>
  <%= l @booking.confirmed_appointment %>
  <% else %> <em>unconfirmed</em> <% end %> </td>
</tr>

Чтобы упростить ссылку на часть, которую вы хотите обновить в JavaScript, давайте добавим к этому идентификатору идентификатор.

  <td id="booking-confirmation"> <% f.hidden_field :confirmed_appointment %>

После этого вам нужно создать файл update.js.erb в вашей папке / views. Теперь вы можете поставить строку

  $("#booking-confirmation").html("<%= l @booking.confirmed_appointment %>");

Там вы найдете поле с идентификатором «подтверждение бронирования» в вашем HTML и обновите его.

Наконец, обязательно включите

 respond_to do |format|
   format.html
   format.js
 end

В вашем действии, чтобы действие отвечало на вызовы JS.

0 голосов
/ 13 марта 2012

Изменение bind('change') -> bind('click')

Хорошо, вы делаете это немного неправильно, http://wowkhmer.com/2011/09/19/unobtrusive-ajax-with-rails-31/ попробуйте использовать это руководство

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...