2010-07-19 91 views
0

嘗試執行一個嵌套對象窗體。該頁面加載沒有錯誤,但是當我發送它時,沒有信息被保存到組織模型中。另一個導軌嵌套窗體問題

SQL調用說這個..

Parameters: {"commit" => "save", "action"=>"update","_method"=>"put", "organization"=>{"likes_snacks"=>"0"}, .. 

這是正確的。通過打開和關閉複選框可以正確更改1和0。但是,我猜這些信息並沒有保存到數據庫中。有任何想法嗎?

HAML:

- form_for @user do |f| 
    = f.label :username 
    = f.text_field :username 
.clear 
    - fields_for :organization do |org| unless @user.organizations.empty? 
    = org.label :likes_snacks, 'Like snacks?' 
    = org.check_box :likes_snacks 
= f.submit 'save', {class => 'button'} 

CONTROLLER:

def edit 
    @user = current_user 
    @organization = current_user.organizations.first 
end 

模型:

ORGANIZATION.RB:

has_many :users, :through => :organizations_users 

USER.RB:

has_many :organizations, :through => :organizations_users 
+0

如果你可以張貼'user'和'organization'型號代碼也更好。 – randika 2010-07-19 16:53:29

+0

f.text_field:username是否保存到數據庫? – 2010-07-19 16:55:20

+0

@jesse是的它確實 – Trip 2010-07-19 17:02:18

回答

2

看起來好像你可以保存父屬性而不是子屬性。

爲了讓孩子通過屬性的嵌套形式的訪問,你需要將「#{} CHILD_CLASS_NAME _attributes」添加到你的父類的方法attr_accessible(只有使用attr_accessible在父模型)

所以你父模型應該是這樣的:

class User < ActiveRecord::Base 
    attr_accessible :username, :organizations_attributes 
    accepts_nested_attributes_for :organizations 
end 

另外,如果你沒有在你的父模型使用attr_accessible這是沒有必要的。

+0

我在用戶模式下不使用attr_accessible。你是否說我在我的模型中不需要它? – Trip 2010-07-19 17:34:54

+0

Yah ..爲什麼會:用戶名與organizational_attributes連接,或者更具體地說,爲什麼用戶的一個屬性屬於organizational_attributes? – Trip 2010-07-19 17:39:42

+0

啊gotcha。我忘記了。這工作!感謝Randika – Trip 2010-07-19 18:50:18

1

我認爲這裏有趣的部分是鏈接器表:organization_users。

對這個問題如此的接受的答案說,你需要

form_for @user do |f| 
    f.fields_for :organization_users do |ff| 
    ff.fields_for :organization 
+0

啊!那麼..在fields_for幫助之前添加f。但我得到這個返回作爲錯誤.. 未知屬性:organization_users 當我嘗試它我的舊方法我得到這個 未知屬性:組織 – Trip 2010-07-19 18:26:57

+0

使用「field_for:組織」(其複數),它返回此ActiveRecord :: UsersController中的AssociationTypeMismatch#update Organization(#24980000)expected,got Array(#101190) – Trip 2010-07-19 18:29:08

+0

你在做「ff.fields_for:organization」---我認爲double ff修復了期望問題。 – 2010-07-19 18:53:46