0

調査と結果は次のようにリンクされています。

class Survey < ActiveRecord::Base
  has_many :results
  accepts_nested_attributes_for :results
end

class Result < ActiveRecord::Base
  belongs_to :survey
end

結果のテーブルには次の列があります。

create_table "results", :force => true do |t|
  t.integer  "survey_id"
  t.integer  "field_id"
  t.boolean  "selected",      :default => false
end

次の仮想属性もあります。

class Result < ActiveRecord::Base
  def name
    self.field.name.gsub("{{input}}", self.input)
  end
end

アンケートのフォームに、最高点の結果から最低点の結果まで結果を一覧表示したいと考えています。

一度に 1 つのみが true になるように、各結果をラジオ ボックスに関連付ける必要があります。

これまでのところ、私のフォームは次のようになります。

= simple_form_for [@competitor, @survey] do |f|
  = f.simple_fields_for :result, f.object.results.sort{ |a,b| b.points <=> a.points}.each do |r|
    = r.input :selected, :label => r.object.name
  = f.button :submit, :id => 'submit_survey'

私のトラブルでは、次のエラーが表示されます。

undefined method `name' for #<Enumerator:0x007fb8075d3038>

どうすれば自分が考えていることを達成できますか?

4

3 に答える 3