2013-08-21 75 views
1

我有一些軌道嵌套形式嵌套形式問題 - 軌道

= form_for @model do |f| 
    ... 
     = f.fields_for :user_partnership do |builder| 
     - user_partners.each do |index| 
      = builder.hidden_field :user_partner_id 
      = content_tag(:li,index.name) 

在我model我已經設置has_many :user_partner, through: :users_partnership

所以現在我有兩個問題:第一,我沒有輸入fields_for裏面的進程。所以,下面的一些SO帖子,我不得不添加此

@model = model.new 
@user_partners = User_Partner.all 
@user_partners.count.times{@model.users_partnership.build} 

但這確實縫尷尬。這個問題是我如何得到fields_for區塊的枚舉數,所以我可以正確設置index.name

編輯,這裏是我的模型

class model 
    has_many :user_partners, through: :users_partnerships 
    accepts_nested_attributes_for :users_partnerships 
end 

class User_Partner 
    has_many :models, through: :users_partnerships 
end 

class Users_Partnership 
    belongs_to :model 
    belongs_to :user_partner 
end 
+1

感覺好像有很多缺失的連接,你可以發佈你的模型有問題,並多解釋一下你正在嘗試做什麼。 – vee

+0

@vinodadhikary我編輯了我的帖子 – user1611830

+0

你確定你的'模型'類實際上是小寫的,而其他兩個類都有下劃線嗎?另外,不要從'ActiveRecord :: Base'繼承嗎?更重要的是,我想要再次澄清的是在您看來「用戶」是什麼,它來自哪裏? – vee

回答

1

首先,fields_for在模型周圍創建一個範圍,而不是在裏面標記。所以,據我所知,你應該從控制器中建立你想要循環的適當模型。

其次,因爲你在一些評論指出,= builder.options[:child_index]沒有工作,有許多user_partnersuser_partnerships,你可以試試這個:

= @model.user_partnerships.each.with_index do |user_partnership,index| 
    = f.fields_for :user_partnerships, user_partnership do |builder| 
     %ul 
     = builder.hidden_field :user_id 
     = content_tag(:li, :id => "#{users[index].name})" 

順便說一句,對於fields_for迭代器似乎已經一個長期存在的問題,並且預計會出現與軌道3.2某種方法fields_for_with_index。我發現這個有趣的post,但在我的軌道3.2.13,我沒有找到任何這種方法。或許,我們可以依靠*.options[:child_index],但我從來沒有測試過!

+0

感謝它的工作! – user1611830

0

如果我理解正確你的問題,你需要user_partners爲用戶的每個實例字段。

在你的控制器,你需要

@instance_variable = @model.user_partnership.build 

那麼你應該在用戶環路,建設形式爲每個實例。

= form_for @model do |f| 
... 
- users.each do |index| 
    = f.fields_for :user_partnership do |builder| 
     = builder.hidden_field :user_partner_id 
     = content_tag(:li,index.name) 

像其他人指出你的類必須從ActiveRecord的繼承和你檢查的情況和多元化。給指導閱讀。 http://edgeguides.rubyonrails.org/active_record_basics.html