1

私は単純な形式でチェックボックスを持っています:

= f.input :status, as: :boolean

しかし、値を 0 または 1 にしたくありません。「not_done」や「completed」などの文字列にしたいのです。どうすればそれを達成できますか? 私はgithubスレッドで何らかの解決策に出くわしましたが、それが何をしているのかよくわかりません。さらに、フィールドがチェックされているかどうかに関係なく、常に値として「新しい」が表示されます...

= f.input :status, as: :boolean do
    - f.check_box :status, {}, "new", "confirmed"
4

2 に答える 2

3

できるよ

<%= f.input :status, as: :boolean,
                     checked_value: 'completed',
                     unchecked_value: 'not_done'
                     %>

completedこれにより、チェックされている場合とチェックされていない場合の値が設定されますnot_done

ただし、先に進んで同じものを表示したい場合は、次のようにすることができます。

<%= f.input :status, as: :boolean,
                     checked_value: 'completed',
                     unchecked_value: 'not_done',
                     input_html: {
                       name: 'status_checkbox', # not a must, will help for identification and testing
                       checked: params[:status] == 'completed' ? 'Completed' : 'Not Done'
                     } %>
于 2019-04-27T02:54:34.737 に答える