2

だから私は状況を表す以下のモデルを持っています:

  • 学生はコンテストに参加します。
  • コンテストは特定のスキルを測定します。
  • コンテストごとに、各学生は測定されたスキルごとにスコアを取得します。

これが私のモデルです:

class Student < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me
  attr_accessible :name
  has_and_belongs_to_many :skills
  has_many :contest_participations
  has_many :contests, :through => :contest_participations
  has_many :contest_scores, :through => :contests

end

class Skill < ActiveRecord::Base
  attr_accessible :name
  has_and_belongs_to_many :students
end

class Contest < ActiveRecord::Base
  attr_accessible :name, :contest_participations_attributes, :contest_scores_attributes
  has_many :contest_participations
  has_many :students, :through => :contest_participations
  has_many :contest_skills
  has_many :skills, :through => :contest_skills
  has_many :contest_scores
  accepts_nested_attributes_for :contest_participations, :contest_scores


end

class ContestParticipation < ActiveRecord::Base
  attr_accessible :contest_id, :student_id
  belongs_to :student
  belongs_to :contest
end

class ContestScore < ActiveRecord::Base
  attr_accessible :contest_id, :score, :skill_id, :student_id
  has_and_belongs_to_many :contests
  has_and_belongs_to_many :skills
  has_and_belongs_to_many :student
end

コンテストの編集ビューで、すべてのコンテスト参加者を表示し、ユーザーが次のようにコンテストの各スキルのスコアを追加できるようにする、formtasticのフォームを作成しようとしています。

しかし、エラーが発生します(student_id無効なシンボル)。生徒のスコアを更新するにはどうすればよいですか?

<%= semantic_form_for @contest do |f| %>

    <%= f.input :name %>

    <%= @contest.students.each do |student| %>
         <%= @contest.skills.each do |skill| %>
               <%= f.inputs :name => "Scores", :for => :contest_scores do |scores_form| %>
                     <%= scores_form.input :student_id => "student.id" %>
                     <%= scores_form.input :skill_id => "skill.id" %>
                     <%= scores_form.input :score, :label => "Score" %>
               <% end %>
               <br />                 
         <% end %>
    <% end %>

    <%= f.actions do %>
         <%= f.action :submit, :as => :button %>
    <% end %>

<% end %>
4

1 に答える 1

0

これを試して。IDを表示したくないと思われるため、非表示を追加しました

<%= scores_form.input :student_id, :as => :hidden, :value => student.id %>
<%= scores_form.input :skill_id, :as => :hidden, :value => skill.id %>
于 2012-04-29T01:41:12.350 に答える