2016-09-20 4 views
0

Итак, вот мой код.Как добавить пользовательские атрибуты в form_for?

<%= form_for @quiz do |f|%> 
    <% @questions.shuffle.each do |q| %> 
    # get_answers returns an array of 4 random answers 
    <% answers = q.get_answers %> 
    <%= f.label q.inquest %><br> 
    <% answers.each do |a| %> 
     <%= f.radio_button <need help here!>, a %> 
     <%= f.label <need help here!>, a %><br> 
     <%= f.hidden_field <need help here!>, q.id %> 
    <% end %> 
    <% end %> 
<% end %> 

моя викторина таблица имеет атрибуты

concept_id 
user_id 

как мне добавить пользовательские атрибуты, которые я могу иметь доступ к в посте действий? Он должен быть динамичным, чтобы он мог масштабироваться с количеством вопросов. Я хочу что-то подобное для моих параметров.

{ 
    user_answers: { 
    question1: { 
     :question_id 
     :answer 
    { 
    } 
} 

В зависимости от того, сколько вопросов есть, он будет идти, как Question1, 2, 3, 4 и т.д ..

hidden_field будет носить с question_id в то время как radio_button будет нести ответ. Мне это не нужно, чтобы сохранить или что-то еще, мне просто нужен доступ к ним

+0

Привет и добро пожаловать к переполнению стека. Cool - отлично выглядит. Поэтому я бы начал с использования 'each_with_index' (чтобы вы знали, какой ответ вы до этого) и используя индекс как часть имени поля формы. например '<% = f.hidden_field" question_id _ # {idx} ",: value => q.id%>' –

+0

Спасибо! Я просто добавил, что я добавил «<% = f.radio_button» ответ # {index + 1} ", a%>' для переключателя, но я получаю неопределенную ошибку метода. Это потому, что '' answer # {index + 1} "' не является атрибутом для @quiz. Как мне заставить это работать? – LeongZeno

+0

Как вы уже нашли, вы используете версии '_tag', а не только версии' form_for' :) –

ответ

1

Хорошо, я понял, что я не должен был называть теги формы на f. вместо того, чтобы иметь их как свои собственные теги формы

, например:

radio_button_tag вместо f.radio_button

Смежные вопросы