2014-01-24 7 views
1

Я разрабатываю приложение для мелочей, которое ставит вопрос и берет ответ с одной из четырех кнопок в сетке 2x2. Я создаю каждую кнопку как отдельную форму и добавляю входные данные со скрытыми полями. Я использую remote: true, чтобы передавать эти данные на рельсы через ненавязчивый javascript. К сожалению, у меня возникают некоторые очень странные ошибки в приложении для викторины, так как ложные ответы иногда проходят, когда нажата кнопка правильного ответа. Пройдя через свой контроллер и просматривая довольно долгое время, я убежден, что происходит что-то неуловимое, и неправильная форма отправляется браузером.Неверные данные формы получаются в Rails

Ответ на этот вопрос формы на мой взгляд, создаются так:

<div id="answers"> 
    <% @choices.each_slice(2) do |first_two| %> 
     <div class="row"> 
     <% first_two.each do |choice| %> 
      <div class="col-md-6"> 
       <%= form_for(@exam, remote: true) do |f| %> 
        <%= hidden_field_tag 'answer', choice.id %> 
        <%= hidden_field_tag 'fIndex', @facts.index(@currentFact) %> 
        <% fact_index = @facts.index(@currentFact) %> 
        <%= f.submit "#{choice.answer}", class: "btn btn-default btn-answer #{answer_size(choice.answer)} ", id: "answer#{choice.id}" %> 
       <% end %> 
      </div> 
     <% end %> 
     </div> 
    <% end %> 

Вы заметите, что каждая форма имеет тот же идентификатор (не хорошо) и класс, и я думаю, что это источник моего боль. Как я могу это изменить? Я бы предпочел не делать этого таким образом и просто передать свои данные формы через помощник link_to с методом: post, но я не думаю, что это возможно. Какие-либо предложения?

ответ

0

Если вы хотите просто указать форму id, вы можете сделать это в параметрах form_for. Кроме того, у вас есть fact_index, но, похоже, он его не использует ... это должно работать:

<%= form_for(@exam, remote: true, id: 'q_' + @exam.id) do |f| %> 
    <%= hidden_field_tag 'answer', choice.id %> 
    <%= hidden_field_tag 'fIndex', @facts.index(@currentFact) %> 
    <%= f.submit choice.answer, class: "btn btn-default btn-answer #{answer_size(choice.answer)} ", id: "answer#{choice.id}" %> 
<% end %> 
Смежные вопросы