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 を使用することをお勧めします。

disabled
このブール属性は、フォーム コントロールを操作できないことを示します。特に、クリック イベントは、無効なコントロールでは送出されません。また、無効なコントロールの値はフォームと共に送信されません。

ただし、入力が送信されないため、値が欠落します。そのため、実際に値を保持する隠しフィールドとペアにすることを検討してください。

<%= 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 に答える