2013-01-07 75 views
0

遇到問題使用HAS_ONE導軌3 HAS_ONE單選按鈕

模型

Class User 
has_one :role 
accepts_nested_attributes_for :role 

Class Role 
attr_accessible :name 
belongs_to :user 

控制器

@user = build_role 

表格單選按鈕

<div class="field"> 
<% Role.offset(1).all.each do |role_fields| %> 
    <%= radio_button_tag "user[role_fields_id][]", role_fields.id, @user.role_id == role_fields.id %> 
    <%= role_fields.name %> 
<% end %> 
</div> 

獲取的形式創建單選按鈕e rror

undefined method `role_id' for #<User id: nil, name: nil, created_at: nil, updated_at: nil> 

我確定我在控制器中設置了關係,爲什麼這不起作用?

+0

您的'用戶'模型是否有'role_id'列? – Zajn

+0

爲什麼我的用戶模型需要role_id列? @Zajn – jmorrissette

+0

我假設你爲每個用戶存儲一個'role_id',但是Geoff在他的回答中說的是有道理的。看到'@ user.role_id'讓我覺得你試圖訪問該User實例上的'role_id'屬性,因爲根據你的錯誤,對於User實例沒有'role_id'方法。 – Zajn

回答

0

我覺得這行:

<%= radio_button_tag "user[role_fields_id][]", role_fields.id, @user.role_id == role_fields.id %> 

應更正如下:

<%= radio_button_tag "user[role_fields_id][]", role_fields.id, @user.role.id == role_fields.id %> 

我希望幫助。

+0

是的,這工作,非常感謝@Geoff – jmorrissette