带有复选框的Rails form_for,为数组类型变量赋值

时间:2014-09-02 06:21:12

标签: ruby-on-rails ruby forms postgresql checkbox

Rails 4.1.4,Ruby 2.1.2。 Postgres的。

我有一个具有roles属性的用户模型。 roles属性是postgres数组类型。我正在尝试使用不同角色选项的复选框创建一个表单,用户可以选择它们适合的角色。如果他们选择“导演”复选框,他们的roles属性,现在您应该看到:

@user.roles = ['director']

我正在尝试使用form_for,但也许这是不可能的。

有谁知道怎么做?

form_for(@user) do |f|
    f.check_box :roles ...?

3 个答案:

答案 0 :(得分:1)

form_for(@user) do |f|
  f.check_box :roles, User::ROLES #assuming you have a constant ROLES holding your roles.

由于评论而进行编辑

答案 1 :(得分:1)

你可以试试这个

 form_for(@user) do |f|
   f.collection_check_boxes(:roles, @user.roles, :id, :labeling_method )

更多细节

http://apidock.com/rails/v4.0.2/ActionView/Helpers/FormOptionsHelper/collection_check_boxes

答案 2 :(得分:0)

假设您的用户

中有一些字符串常量
<%= form.collection_check_boxes(:roles, USER::ROLES_STRINGS[access_if_you_need_from_this_constant_but_we_need_an_array_here].keys, :to_s, Proc.new{|l| USER::ROLE_STRINGS[access_if_you_need_from_this_constant_but_we_need_an_array_here][l]}) %>

应该根据你的结构工作/让你靠近!