2013-02-10 143 views
0

我有以下嵌套形式:在嵌套形式访问对象

<%= form_for @contrat,:url => backend_orders_update_report_url(@contrat) do |f| %> 
<%= f.fields_for :contrat_lines do |fcl| %> 
    <%= fcl.object.inspect %> 
    <% end %> 
<% end %> 

输出如下:

nil 

在嵌套形式我想显示几个元素不是作为形式但作为原始文本和一些表单字段。通常在通过执行f.object.name的形式中,我将访问该名称并能够按照我的意愿显示它。但是,在这里,如果我做fcl.object,只有零。它应该显示contrat_line对象的检查。

是否有可能以嵌套形式访问数据?

编辑:

控制器动作:

def show_report 
    @contrat = Contrat.find(params[:id]) 
end 

这里是车型会是什么样的beggining的关系:

ContratLine:

class ContratLine < ActiveRecord::Base 
    include Priceable 

    belongs_to :contrat 
    belongs_to :good 
    #a enlever ici et dans la base 
    attr_accessible :active_start,:active,:good_id,:pricing,:contrat 
    validates :active_start, :presence=> true,:if => "active" 
    validate :active_start_smaller_than_active_stop 
    validate :active_start_day_cannot_be_greater_than_28 
    has_one :pricing, :as => :priceable, :dependent => :delete 
    before_validation :convert_month_year_to_date 
    after_save :set_user_subscription_date 

Contrat:

class Contrat < ActiveRecord::Base 

    has_many :contrat_lines, :dependent => :delete_all 

    belongs_to :user 
    attr_accessible :user_id,:pricing_id,:state,:adresse_id,:adresse,:payment,:adresse_attributes,:automatic,:start_date,:end_date 
    enum_attr :state, %w(basket waiting_data to_confirm paid) do 
    labels :basket=>'Panier', :to_confirm=>'Non payé',:paid=>'Payé' 
    end 
    enum_attr :payment, %w(debit_card wire_transfer cheque direct_debit) 
    belongs_to :adresse 
    accepts_nested_attributes_for :adresse, :allow_destroy => true 
    scope :by_state, lambda { |state| where("state = ?",state) } 
    scope :last_automatic, where("automatic = true").order("invoice_date DESC") 
    scope :last_with_adresse, where("state != 'basket'").order("invoice_date DESC") 

    before_validation :set_numbers 
+0

你的模型看起来怎么样?你可以发布一些模型代码吗? – 2013-02-10 11:20:10

回答

1

你缺少一个accepts_nested_attributes_for:contrat_lines还有:contrat_lines_attributes在attr_accessible