我試圖創建一個約20「興趣」的複選框表,讓用戶選擇儘可能多的他們想要的。我有興趣&具有HABTM關係的用戶模型(通過「interests_users」連接表)。如何創建一個rails複選框表單?
所以:
- 我如何播種利益表(只是有一個名字:字符串屬性)與20名左右的預設的利益?
- 我如何在ERB表單中顯示這些內容,以便用戶可以根據自己的喜好選擇多少個?
注..即時通訊使用邪惡寶石打造一個多形式(<木材加工大)
我試圖創建一個約20「興趣」的複選框表,讓用戶選擇儘可能多的他們想要的。我有興趣&具有HABTM關係的用戶模型(通過「interests_users」連接表)。如何創建一個rails複選框表單?
所以:
注..即時通訊使用邪惡寶石打造一個多形式(<木材加工大)
<% for interest in Interest.find(:all) %>
<%= check_box_tag "user[interest_ids][]", interest.id, @user.interests.include?(interest) %>
<%= interest.name %>
<% end %>
如果你on Rails的> = 3.0,再看看的db/seeds.rb文件。您可以在該文件中放入任意的Ruby代碼,您可以通過Rake任務rake db:seed
運行該代碼。您可以放置很多行,如Interest.create :name => 'World Domination'
。
這將取決於你如何設置你的表單。去關你給的信息,我會做這樣的事情:
<%= form_for @user do |f| -%>
<% Interest.all.each do |i| -%>
<div><%= i.name -%> <%= check_box_tag 'user[interests][]', i.id, @user.interests.detect{|ui| ui.name == i.name} -%></div>
<% end -%>
<% end -%>
在你的控制,你會那麼可以只更新您的用戶模型的屬性。一定要確保你能夠批量分配你的參數,並且還要記住HTML規範對未選中複選框的限制(請閱讀標題爲「Gotcha」的部分)。
編輯:修復了一些與語法有關的拼寫錯誤。
我把所有的興趣存儲在一個數組中..我將如何種子數組,所以我不必做「Interest.create:name =>'World Domination'」20倍... ...下面的工作? Interest.create:name => [「Adevnture sports」,「Arts and crafts」......] – js111
Array.each do | interest_name | Interest.create(:name => interest_name) end – galulex