Несколько отправок формы на одной странице - хотите отправить только одну, но она отправляет их все - PullRequest
0 голосов
/ 17 апреля 2011

Хорошо, это очень странная проблема, и у нее много возможных причин, поэтому я постараюсь включить все, что нужно для ответа, но если есть что-то еще, просто скажите мне, и я опубликую это

Итак, у меня есть приложение, в котором перечислены «пожелания», в основном просто модель блога / поста.Каждое желание имеет много голосов, и голоса принадлежат желанию.На моей индексной странице я хотел бы перечислить все пожелания и соответствующие голоса, кнопку, позволяющую подать голос, и форму для отправки нового пожелания

Это частичное _новое желание

* 1006.*

это удаленно, потому что я хочу использовать ajax для публикации на индексной странице, вот способ, которым я перечисляю пожелания, в таблице с именем, голосами и кнопкой для голосования

<tr>
<td> <%= w.title       %> </td>
<td> <%= w.author      %> </td>
<td> <%= w.count_votes %> </td>
<td> <%= render 'vote' %> </td>
<tr>

и, наконец, частичное голосование

<%= form_for(@vote) do |f| %>
  <div class="fields">
    <%= f.hidden_field :wish_id, :value => @w.id%>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Теперь вот проблема, вот копия журнала рельсов, когда я пытаюсь создать новое желание

Started POST "/wishes" for 127.0.0.1 at 2011-04-16 19:44:05 -0500
  Processing by WishesController#create as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"FnrT95FCdv5fJs8AoxIMhrRjBk79wmWJ2s/RdsB43Pg=", "wish"=>{"title"=>"paul"}}
  AREL (0.7ms)  INSERT INTO "wishes" ("title", "body", "author", "created_at", "updated_at") VALUES ('paul', NULL, NULL, '2011-04-17 00:44:05.190203', '2011-04-17 00:44:05.190203')
Rendered wishes/create.js.erb (0.4ms)
Completed 200 OK in 32ms (Views: 8.2ms | ActiveRecord: 0.7ms)


Started POST "/votes" for 127.0.0.1 at 2011-04-16 19:44:05 -0500
  Processing by VotesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"FnrT95FCdv5fJs8AoxIMhrRjBk79wmWJ2s/RdsB43Pg=", "vote"=>{"wish_id"=>"1"}}
  Wish Load (0.5ms)  SELECT "wishes".* FROM "wishes" WHERE "wishes"."id" = 1 LIMIT 1
  AREL (0.3ms)  INSERT INTO "votes" ("weight", "wish_id", "created_at", "updated_at") VALUES (1, 1, '2011-04-17 00:44:05.321513', '2011-04-17 00:44:05.321513')
Redirected to http://localhost:3000/
Completed 302 Found in 62ms


Started GET "/" for 127.0.0.1 at 2011-04-16 19:44:05 -0500
  Processing by WishesController#index as HTML
  Wish Load (54.4ms)  SELECT "wishes".* FROM "wishes"

Как вы можете видеть, пожелания отправляют правильно /wishes и даже отображают create.js правильно!но затем он продолжает идти и также выводит сообщение /votes!и это отображается как HTML, как обычно.

Почему он отправляет обе формы?Я просто хочу отправить один или другой?

РЕДАКТИРОВАТЬ _ вот вывод HTML на странице

<table border="1">
<tr>
<td> paul </td>
<td>  </td>
<td> 1 </td>
<td> <form accept-charset="UTF-8" action="/votes" class="new_vote" id="new_vote" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="FnrT95FCdv5fJs8AoxIMhrRjBk79wmWJ2s/RdsB43Pg=" /></div>
  <div class="fields">
    <input id="vote_wish_id" name="vote[wish_id]" type="hidden" value="1" />
  </div>
  <div class="actions">
    <input id="vote_submit" name="commit" type="submit" value="Create Vote" />
  </div>
</form> </td>
<tr>
<tr>
<td> paul kaplan </td>
<td>  </td>
<td> 0 </td>
<td> <form accept-charset="UTF-8" action="/votes" class="new_vote" id="new_vote" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="FnrT95FCdv5fJs8AoxIMhrRjBk79wmWJ2s/RdsB43Pg=" /></div>
  <div class="fields">
    <input id="vote_wish_id" name="vote[wish_id]" type="hidden" value="2" />
  </div>
  <div class="actions">
    <input id="vote_submit" name="commit" type="submit" value="Create Vote" />
  </div>
</form> </td>
<tr>
</table>

<form accept-charset="UTF-8" action="/wishes" class="new_wish" data-remote="true" id="new_wish" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="FnrT95FCdv5fJs8AoxIMhrRjBk79wmWJ2s/RdsB43Pg=" /></div>


  <div class="field">
    <label for="wish_title">I Wish I Had</label>
    <input id="wish_title" name="wish[title]" size="30" type="text" />
  </div>
  <div class="actions">
    <input id="wish_submit" name="commmm" type="submit" value="submit" />
  </div>
</form>

</body>
</html>

1 Ответ

0 голосов
/ 03 июня 2011

это было какое-то время, но для полноты, если кто-то еще столкнется с этой проблемой, я полагаю, что должен поднять свой ответ.в основном комментарии выше были правильными, у меня было 2 формы с одинаковым идентификатором, поэтому он отправлял их оба, и JavaScript испортил их.

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