2010-02-08 54 views
0

我有一個應用程序,當用戶註冊時,他們可以選擇他們想要描述的星期幾。每個用戶都有一個mondaysub,tuesdaysub等(所有字符串)來存儲他們是否在那些日子收到電子郵件。由於其他一些原因,我需要保留它,以便在每列中標記以指定每天訂閱的日期。列表條目和顯示最佳實踐

目前我有:

<% form_for @user do |f| %> 

<h3>Please select the days you would like to recieve a trailer!</h3> 
<%= f.check_box :mondaysub, {}, "t", "f" %> <label>Monday</label> 
<%= f.check_box :tuesdaysub, {}, "t", "f" %> <label>Tuesday</label> 
<%= f.check_box :wednesdaysub, {}, "t", "f" %> <label>Wednesday</label> 
<%= f.check_box :thursdaysub, {}, "t", "f" %> <label>Thursday</label> 
<%= f.check_box :fridaysub, {}, "t", "f" %> <label>Friday</label><br> 
<%= f.check_box :saturdaysub, {}, "t", "f" %> <label>Saturday</label> 
<%= f.check_box :sundaysub, {}, "t", "f" %> <label>Sunday</label><br> 
    <p><%= f.submit "Subscribe Me!" %></p> 
<% end %> 

我的問題是...有沒有更好的方式來讓用戶選擇他們想要得到的(對用戶更友好然後檢查各個窗口郵件一週中的天),但我仍然可以獲取我需要的數據。另外,我希望用戶在他們回來編輯時查看他們訂閱的內容。

謝謝!

回答

1

要清理您的形式,你可以這樣做:

<% %w{monday tuesday wednesday thursday friday saturday sunday}.each do |day| %> 
    <%= f.checkbox "#{day}sub".to_sym, {}, "t", "f"%> 
    <label><%= day.camelcase %></label> 
<% end %> 

至於如何在用戶界面呈現這個:

我會建議保持複選框的想法,因爲他們開啓/關閉。您可以根據自己的需要設計風格,甚至可以使用jQuery之類(在頁面加載時)隱藏複選框並顯示更友好的用戶界面,只需在後臺檢查/取消選中複選框即可。

另外,您應該考慮是否有某些默認設置可以滿足大部分用戶的需求。例如,如果大多數用戶需要週一至週五,則可以在頁面加載時選擇這些用戶,只留下用戶執行所需的小型自定義設置。

+0

偉大的建議。這清理了很多,我喜歡預置的想法;一定會嘗試與我的用戶。謝謝! – 2010-02-09 02:43:43

1

如何做:

請選擇一天你想收到拖車:| DROPDOWN | |添加按鈕|

+0

我認爲複選框比這更方便用戶使用。 另外,爲標籤添加'for'屬性,以便用戶也可以點擊文本。 – Leventix 2010-02-08 17:08:10

+0

感謝您的提示。是的,我喜歡複選框,但我覺得有一種更好的方式來做到這一點......就像他們連續列出一樣,你可以選擇其中的多個。 – 2010-02-08 17:23:19

1

首先,你應該這樣做:

<%= f.check_box :something %>  
<%= f.label :something %> 

這將標籤和複選框

關於你應該保持的複選框,但讓他們奠定了很好所以也沒有覺得UI關聯像一個大型表格。

要做到這一點,填充是你的朋友。同時添加一些懸停狀態和圖像或過和你要善於去:)

+0

完美,謝謝......這很有道理,我會花更多時間在CSS上! – 2010-02-08 17:43:16