0

我这样做是为了让用户可以选择允许他们的个人资料公开或只允许注册用户。

以下是我采取的步骤:

rails g migration AddIs_publicToUsers is_public:boolean
rake db:migrate

我的数据库中有 :is_public to default=> true

然后我将它添加到 user.rb 模型中

attr_accessible :is_public

现在我正在尝试创建视图,但使用单选框而不是复选框会更好吗?

<%= f.label :is_public, "Set Profile as Private" %>
      <%= f.check_box :is_public, :checked => false %>

上面的问题是,在用户将他们的个人资料检查为私有并返回该页面后,它不会保持选中状态,这意味着用户无法再次公开他们的个人资料。

最后,如何确保 is_public 指的是未登录用户与登录用户?例如,如果 is_public 为 true,则包括已登录和未登录在内的所有人都可以查看个人资料。但是,如果 is_public 为 false,则只有网站的登录用户才能查看。

4

1 回答 1

0

你的问题真的是多个问题合二为一。

单选与复选框

鉴于这似乎是具有默认值的强制性和二元选择,单选按钮将是您的最佳选择。作为提示,请确保您的标签设置正确,以便用户可以单击标签,而不必用鼠标(很小)找到单选按钮本身。

单选按钮未更新

如果表单提交后单选按钮没有更新,则用户的输入在某处丢失了。检查提交的参数以查看控制器是否正在接收它们,然后确保将它们转换为保存的记录。如果记录正在更新,请确保您的单选按钮反映了表单本身中的数据库值。

登录用户与未登录用户

我的建议是在配置​​文件控制器上创建一个before_filter,它检查 的值is_public,检查用户是否已登录,然后将未经身份验证的用户重定向到您喜欢的任何地方。

于 2013-03-30T21:06:03.200 回答