Вложенные формы — fields_for() и символы

Я боролся с этим в течение последних нескольких часов:

У меня есть вложенная форма (показана ниже), и она работает, но я не могу понять, как получить доступ к :student_id в _form_outcome_ratings.html.erb. Он отображает соответствующий student_id в созданном скрытом поле, но я понятия не имею, как получить доступ к этому номеру, чтобы отобразить имя студента рядом с полем рейтинга. Когда я пытаюсь сослаться на :student_id или :student_id.to_s, он возвращает «student_id» вместо числа. Я думаю, что упускаю или неправильно понимаю что-то очень простое, но я не могу понять, что!

Спасибо, что нашли время, чтобы взглянуть на это, и дайте мне знать, если есть что-то, что мне нужно уточнить или добавить.

/app/views/learning_outcomes/_form_rate.html.erb

<% form_for(@learning_outcome) do |f| %>  
  <% f.fields_for :outcome_ratings do |g| %>  
    <%= render :partial => 'form_outcome_ratings', :locals => {:f => g} %>  
  <% end %>  
  <%= f.submit %>  
<% end %>  

/app/views/learning_outcomes/_form_outcome_ratings.html.erb

<%= f.hidden_field :student_id %>  
<%= f.label :rating %><%= f.text_field :rating %>  

/приложение/контроллеры/learning_outcomes_controller.rb

def rate
  @learning_outcome = LearningOutcome.find(params[:id], :include => {:section => {:students => {:outcome_ratings => [:learning_outcome, :student]}}})
  @learning_outcome.section.students.each do |student|
    @learning_outcome.outcome_ratings.build(:student_id => student.id) if student.outcome_ratings.where(:learning_outcome_id => @learning_outcome.id).blank?
  end    
end

person niiru    schedule 08.04.2011    source источник


Ответы (1)


Не уверен, что понял, чего ты хочешь, но...

Вы можете получить доступ ко всем переменным модели в конструкторе форм, если сделаете следующее:

f.object.your_variable

пример:

f.object.id
person apneadiving    schedule 08.04.2011
comment
Благодарю вас! Это (по сути) именно то, что я искал. f.object.student_id во вложенной части возвращает значение, которое я пытался получить. - person niiru; 08.04.2011