2012-05-11 46 views
0

我試圖創建一個約20「興趣」的複選框表,讓用戶選擇儘可能多的他們想要的。我有興趣&具有HABTM關係的用戶模型(通過「interests_users」連接表)。如何創建一個rails複選框表單?

所以:

  1. 我如何播種利益表(只是有一個名字:字符串屬性)與20名左右的預設的利益?
  2. 我如何在ERB表單中顯示這些內容,以便用戶可以根據自己的喜好選擇多少個?

注..即時通訊使用邪惡寶石打造一個多形式(<木材加工大)

回答

1
<% for interest in Interest.find(:all) %> 
    <%= check_box_tag "user[interest_ids][]", interest.id, @user.interests.include?(interest) %> 
    <%= interest.name %> 
<% end %> 
+0

我把所有的興趣存儲在一個數組中..我將如何種子數組,所以我不必做「Interest.create:name =>'World Domination'」20倍... ...下面的工作? Interest.create:name => [「Adevnture sports」,「Arts and crafts」......] – js111

+0

Array.each do | interest_name | Interest.create(:name => interest_name) end – galulex

1
  1. 如果你on Rails的> = 3.0,再看看的db/seeds.rb文件。您可以在該文件中放入任意的Ruby代碼,您可以通過Rake任務rake db:seed運行該代碼。您可以放置​​很多行,如Interest.create :name => 'World Domination'

  2. 這將取決於你如何設置你的表單。去關你給的信息,我會做這樣的事情:

    <%= 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」的部分)。

編輯:修復了一些與語法有關的拼寫錯誤。

+0

我將所有的興趣存儲在一個數組中..我將如何種子數組,所以我不必做「Interest.create:name =>'World Domination' 「20倍以上...會做以下工作嗎? Interest.create:name => [「冒險運動」,「工藝美術」......] – js111

+0

'['冒險運動','工藝美術']。 Interest.create:name => i}' – juanpaco

相關問題