2014-12-20 91 views
0

我有一個奇怪地填充的選擇表單。我想知道我是否可以得到解釋。表單選擇以奇怪的方式填充

模式:

我有有一個多對多的一個模式叫對話用戶模型。對話依次has_many消息和消息屬於對話。除此之外,用戶和消息沒有鏈接。

的消息控制器

我調試一個小型的郵件系統,所以我決定將所有用戶(我知道,我知道)傳遞給我的看法,這樣我可以在一個下拉列表中顯示它們和測試發送消息給他們。基本上只是

def new  
    @message = Message.new 
    @users = User.all 
end 

對於一些奇怪的原因,我必須有belongs_to :user在我的消息類或我的錯誤undefined method "user" for #<Message:0x0000000581b898>

查看

在我的表單中我基本上

<%= form_for(@message) do |f| %> 
<div class="form-group"> 
    <%= f.select :user, collection: @users.all.map { |user| [user.id, user.name] }%> 
</div> 

Other nonsense 

<% end %> 

問題

因此,當生成一條新消息時,爲什麼我的下拉列表正在填充,正如它試圖訪問Message.User.id而不是僅僅是User.id,如果我正在給@users= User.all正確的數據?

感謝

回答

1

這是因爲你使用表單生成器實例f定義爲select:user。如果您不想將:usermessage關聯,則可以使用select_tag

<%= select_tag :user, options_for_select(@users.all.map { |user| [user.id, user.name] }) %> 
1

那是因爲你的表格試圖訪問你的信息對象的用戶的方法/屬性。

f.select :user