0

ある種のメタ質問モデルを使用するレポートシステムを構築しています。質問は以前にデータベースに保存されており、レポートの種類に応じて、データベースからいくつかの質問が取得されます。

Variable物事を乾いた状態に保ちたいので、モデルの情報をreport_header無駄に渡す方法を見つけようとしています。

new私が持っているアクションでは:

  reportBody = @report_head.report_bodies.build(:variable_id => a.id)
  @report_head.variables #modified, thx.

Variable必要なのは、ある方法でtoからreport_headに属性を渡すことだけDRYです。

私のモデルを知る必要がある場合:

class Variable < ActiveRecord::Base
  attr_accessible :id,:break_point, :description, :name, :time_frequency, :v_type
  has_many :report_bodies
  has_many :report_heads, :through => :report_bodies   
end

class ReportHead < ActiveRecord::Base
  attr_accessible :email, :name , :report_bodies_attributes, :report_bodies, :variables_attributes
  has_many :report_bodies
  has_many :variables, :through => :report_bodies   
  accepts_nested_attributes_for :report_bodies
end

class ReportBody < ActiveRecord::Base
  attr_accessible :report_head_id, :variable_value, :variable_id, :variables_attributes, :report_heads
  belongs_to :report_head
  belongs_to :variable
end

アップデート

提案されたようにモデルを更新し、変数を呼び出す方法を変更しました。しかし、私が次のようなことをした場合、ビューでそれを使用する方法についてまだ混乱しています:

   <%= f.fields_for :variables do |variable| %>
       <%= variable.text_field :name, :value => :name, :class => 'text_field' %>  
   <% end %>

実際の名前の代わりに文字列を出力します。

4

1 に答える 1

1

間違った名前の関連付けを定義しました。ReportBodyの関連付けは次のようになります。

belongs_to :report_head 
belongs_to :variable 

これは正しくありません:

@report_head.report_bodies.build(:variable_id => a.id,:report_head_id =>@report_head.id) 

次のように変更します。

@report_head.variables.build(:variable_id => a.id)

report_head_idを設定する必要はありません。そしてこれは間違っています:

@report_head.report_bodies.variables

すべての変数を@report_headに属するようにする場合は、次を使用する必要があります。

@report_head.variables
于 2012-11-16T21:34:11.287 に答える