我有这样的表格:
<%= 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
方法转换字符串中的标记,以便用户编辑表单以根据需要更改它。
但是,这很容易出错,我希望用户能够在复选框中选择所有可能的标签。
为了达到这个目的,我需要做些什么?
感谢。
答案 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