简单表单上的只读复选框仍然可以更新

时间:2013-09-08 03:49:53

标签: ruby-on-rails-3 simple-form readonly

我们在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?感谢。

1 个答案:

答案 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} %>