Несколько форм с использованием Rails & JQuery & AJAX - PullRequest
2 голосов
/ 03 мая 2010

У меня есть несколько купонов на странице, и я пытаюсь получить комментарии для работы с каждым купоном. Так что для каждого купона у меня есть форма комментариев. Я использую jQuery + Ajax для достижения этой цели. Вот как выглядит мой код.

Страница купона

 <p>Comments:</p>
  <% form_for(@comment) do |f| %>
    <%= f.label :body %><br /><%= f.text_field :body, :size => "24"  %>
    <%= f.hidden_field :coupon_id, :value => coupon.id %>
    <%= f.submit "Save" %> 
  <% end %>

application.js

jQuery.ajaxSetup({ 
  'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
})




jQuery.fn.submitWithAjax = function() {
  this.submit(function() {
    $.post(this.action, $(this).serialize(), null, "script");
    return false;
  })
  return this;
};

$(document).ready(function() {
  $("#new_comment").submitWithAjax();
})

Я попытался изменить селектор jQuery на класс

$(".new_comment").submitWithAjax();

Думая, что это сработает, теперь все кнопки отправки работают, однако он отправляет только первую форму на странице.

Что я могу изменить, чтобы ajax отправлял правильную форму, а не первую?

Вот как выглядит визуализированный html:

<form action="/comments" class="new_comment" id="new_comment" method="post">
  <div style="margin:0;padding:0;display:inline">
    <input name="authenticity_token" type="hidden" value="b2ToPsRqJ+aXvh/W1pCpWrOlX010aruhku7alWoUSSg=" /></div> 
    <table> 
      <tr> 
        <td width="260px"> 
          <label for="comment_body">Body</label><br />
          <input id="comment_body" name="comment[body]" size="24" type="text" />
        </td> 
      </tr>
    </table> 
  <input id="comment_coupon_id" name="comment[coupon_id]" type="hidden" value="1790" /> 
  <input id="comment_submit" name="commit" type="submit" value="Save" />
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...