我们在rails 3.2 app中使用simple_form 2.0.2。对于某些布尔字段,我们希望在某些情况下使其成为只读,并且不允许更新。以下是我们应用中的代码:
<%= f.input :signed, :label => t('Signed'), :as => :boolean, :readonly => readonly?(@project, 'signed') %>
我们发现,如果:readonly => true
,当鼠标在简单表格上的字段上方时,会出现一个小红圈(圆圈中有斜线)。但是,仍然可以更改和保存复选框。有没有办法在simple_form上设置布尔复选框只读,不能用以下内容更新:readonly?感谢。
答案 0 :(得分:13)
不是:readonly
,不是。
readonly
HTML输入属性仅阻止用户更改字段的值。它不会阻止它们与之交互,因为点击它并切换复选标记显示。这只会改变复选框的状态,无论是打开还是关闭。
specs on the readonly attribute这样说:
<强>只读强>
此布尔属性表示用户无法修改控件的值。
如果您根本不希望他们更改状态,您可能需要使用disabled:
<强>停用强>
此布尔属性表示表单控件不可用于交互。特别是,不会在禁用的控件上调度click事件。此外,禁用控件的值不会随表单一起提交。
但由于输入未发送,因此该值将丢失。因此,请考虑将其与实际保存该值的隐藏字段配对。
<%= f.input :signed_display, :label => t('Signed'), :as => :boolean, :disabled => true %>
<%= f.input :signed, :as => :hidden, input_html: {value: @project} %>