我创建了一个check_box_tag并将其设置为选中并禁用它已设置且用户无法更改复选框的状态。
<% 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>
检查并禁用当前用户==数组中用户的复选框
问题是,如果我提交表单,则禁用的复选框不会被提交为已选中。 我该怎么解决这个问题。我只使用了只读但是你仍然可以取消选中该复选框(即使它被提交为已检查。
我需要一种方法在我提交之前从复选框中删除disabled
标记。
答案 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 %>