列表输入和显示最佳实践

时间:2010-02-08 16:42:09

标签: ruby-on-rails

我有一个应用程序,当用户注册时,他们可以选择他们想要描述的星期几。每个用户都有一个mondaysub,tuesdaysub等(所有字符串)来存储他们是否要在那些日子收到电子邮件。由于其他一些原因,我需要保留它,以便每列中的f或t标记指定每天订阅。

目前我有:

<% 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 %>

我的问题是......是否有更好的方法允许用户选择他们想要接收邮件的一周中的哪一天(更加用户友好,然后检查单个框)但我仍然可以获取数据存储我需要它至。此外,我希望用户在返回编辑时看到他们订阅的内容。

谢谢!

3 个答案:

答案 0 :(得分:1)

怎么样:

请选择您希望收到预告片的日期:| DROPDOWN | | ADD BUTTON |

答案 1 :(得分:1)

首先你应该这样做:

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

这将关联标签和复选框

关于UI,您应该保留复选框,但要将它们放置得很好,这样就不会感觉像是一个大表格。

为此,填充是你的朋友。还要添加一些悬停状态和图像,你应该好好去:)

答案 2 :(得分: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 %>

至于如何在UI中呈现:

我建议保持复选框的概念,因为它们可以打开/关闭。您可以根据需要设置样式,甚至可以使用jQuery之类的东西(在页面加载时)隐藏复选框并显示更友好的UI,只需检查/取消选中后台的复选框即可。

此外,您应该考虑是否存在满足大多数用户需求的特定默认值。例如,如果大多数用户想要mon-fri,您可以在页面加载时选择那些用户,只留下用户执行所需的小型自定义。