将数组显示为复选框

时间:2015-06-15 18:04:49

标签: ruby-on-rails

我有这样的表格:

<%= form_for @user, url: admin_user_path(@user.id) do |f| %>
      <%= f.label :first_name %>
      <%= f.text_field :first_name %>
      <br>
      <%= f.label :last_name %>
      <%= f.text_field :last_name %>
      <br>
      <%= f.label :tags %>
      <%= f.text_field :tags_string %> 
      <%= f.submit "update", placeholder: "Update" %>
<% end %>

@ user.tags是一个字符串数组,可能有["A","B","C"]个标签。有些用户有一个,有些用了所有用户......等等。

使用tags_string方法转换字符串中的标记,以便用户编辑表单以根据需要更改它。

但是,这很容易出错,我希望用户能够在复选框中选择所有可能的标签。

为了达到这个目的,我需要做些什么?

感谢。

2 个答案:

答案 0 :(得分:1)

我首先建议使用simple_form(git:plataformatec/simple_form)而不是form_for,这样可以让您更轻松!

您可以将表单编写为:

<%= simple_form_for @user, url: admin_user_path(@user.id) do |f| %>
  <%= f.input :first_name %>
  <%= f.input :last_name %>
  <%= f.input :tags_string, as: :check_boxes, collection: ['A', 'B', 'C'] %> 
  <%= f.button :submit, value: 'Update' %>
<% end %>
瞧,瞧,你们都准备好了!您是在序列化标签数组还是标记了一个拥有用户的模型?

答案 1 :(得分:0)

您可以循环显示可能的标签并显示每个标签的复选框。 您修改后的代码如下所示: -

  <% @user.tags.each do |tag| %>
        <%= check_box_tag 'tags_string[]', tag.name -%>
        <%= tag.name -%>
  <% end %>

显示已检查或未显示的文档参考以及其他可用选项: - http://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag