3

我们在 rails 3.2 应用程序中使用 simple_form 2.0.2。对于某些布尔字段,我们希望在某些情况下使其只读并且不允许更新。这是我们应用程序中的代码:

<%= f.input :signed, :label => t('Signed'), :as => :boolean, :readonly => readonly?(@project, 'signed') %>

我们发现如果:readonly => true,当鼠标在简单表单上的字段上时,会出现一个红色的小圆圈(圆圈中有一个斜线)。但是,该复选框仍然可以更改和保存。有没有办法使 simple_form 上的布尔复选框只读并且不能用 :readonly 更新?谢谢。

4

1 回答 1

15

不与:readonly,不。

readonlyHTML 输入属性仅阻止用户更改字段的值。它不会阻止他们与它交互,因为单击它并切换复选标记显示。这只会改变复选框的状态,无论是打开还是关闭。

readonly 属性的规范是这样说的:

readonly
这个布尔属性表示用户不能修改控件的值。

如果您根本不希望他们改变状态,您可能需要使用禁用:

disabled
此布尔属性指示表单控件不可用于交互。特别是,click 事件不会在禁用的控件上调度。此外,禁用控件的值不会与表单一起提交。

但是由于输入没有一起发送,因此该值将丢失。因此,请考虑将其与实际保存该值的隐藏字段配对。

<%= f.input :signed_display, :label => t('Signed'), :as => :boolean, :disabled => true %>
<%= f.input :signed, :as => :hidden, input_html: {value: @project} %>
于 2013-09-08T06:16:02.120 回答