RubyOnRails Form_for check_box_tag禁用Checkbox POST提交

时间:2014-06-15 13:13:01

标签: html ruby-on-rails checkbox form-for

我创建了一个check_box_tag并将其设置为选中并禁用它已设置且用户无法更改复选框的状态。 enter image description here

          <% checkedDisabled = false
         if current_user.id == user.id
           checkedDisabled = true
         end
      %>

      <div>
        <%= check_box_tag "book[user_ids][]", user.id, @book.users.include?(user), {checked: checkedDisabled, disabled: checkedDisabled}  %>
        <%= user.email %>
      </div>

The checkbox is checked and disabled 检查并禁用当前用户==数组中用户的复选框

问题是,如果我提交表单,则禁用的复选框不会被提交为已选中。 我该怎么解决这个问题。我只使用了只读但是你仍然可以取消选中该复选框(即使它被提交为已检查。

我需要一种方法在我提交之前从复选框中删除disabled标记。

1 个答案:

答案 0 :(得分:0)

未提交已停用的表单字段,因此您不想使用它。在文本字段,选择框等,您可以使用readonly来获得所需的效果,但是这对于复选框不起作用。有关详细信息,请参阅此答案:Can HTML checkboxes be set to readonly?

解决方法是禁用check_box,然后将值存储在隐藏字段中,如下所示:

 <%= check_box_tag "book[user_ids][]", user.id, @book.users.include?(user), {checked: checkedDisabled, disabled: checkedDisabled}  %>
<% if checkedDisabled %>
 <%= hidden_field_tag "book[user_ids][]", user.id, value: @book.users.include?(user)  %>
<% end %>