2013-09-10 59 views
0

我曾嘗試使用這個對我的測試Formtastic - 爲什麼不工作

<%= f.input :user, :label => 'Usuario: ' , :as => :select , :collection => @users , :include_blank => true %> 

,並沒有工作....

但是當切換到:

<%= f.input :user_id, :label => 'Usuario: ' , :as => :select,  :collection => Hash[@users.map{|b| [b.nickname,b.id]}] , :include_blank => true%> 

它有用嗎?有誰知道爲什麼?

我也把它放在一起的代碼:

<%= f.input :user, :label => 'Usuario: ' , :as => :select , :collection => @users , :include_blank => true %> 

<%= f.input :user_id, :label => 'Usuario: ' , :as => :select,  :collection => Hash[@users.map{|b| [b.nickname,b.id]}] , :include_blank => true%> 

但是第一個沒有工作(我做只是爲了看看,如果是在@user變量some​​nte錯誤)..

是與模型有關的東西?有誰知道爲什麼?

回答

0

從formtastic文檔:許多輸入提供了一個選項集合(如:select,:radio,:check_boxes,:boolean)。在許多情況下,Formtastic可以通過模型關聯找到選擇,但是如果您想使用自己的選項,:collection選項就是您想要的選項。你可以通過在對象,字符串,散列數組的數組...

您可以檢查documentation

collection是期望得到一個哈希或數組,但是當你通過@user你通過一個實例你的模型的變量,這將無法正常工作。

+0

** @ user **變量是一個Model.all(User.all)的返回值..這可以在不使用哈希的情況下在另一個視圖上工作......這裏是另一個視圖的代碼'<%= f.input:pessoa,:label =>'Selecione o cliente/pessoa',:as =>:select,:collection => Pessoa.all%>' – user2758091

+0

以簡單的形式輸入'<%= f。關聯:pessoa,如::select,label:'Selecione o cliente/pessoa'%>' –