6

form_for フォームがあり、その中でフォーム ヘルパー チェック ボックスを使用しています。モデルにはブール値のフィールドがありますが、ユーザーが理解しやすいと思うので、その逆の観点からフォームに表示できるようにしたいと思います。

Rails フォーム ヘルパーを、モデルのブール フィールドが反転したかのように動作させる方法はありますか?

例:

<% form_for :user do |form| %>
  <%= form.check_box :privacy_disabled %>
<% end %>

この例では、 User モデルに boolean フィールドがありますprivacy_disabled。プライバシーを有効にするには、ここにチェックを入れて、これをフォームに表示したいと思います。

チェックボックスのヘルパー関数には、チェックされた値とチェックされていない値を設定する機能がありますが、これらを反転すると、事前に保存された値がチェックボックスに正しく入力されないようです。

4

2 に答える 2

13

これが私がこの問題を解決した方法です。実際、最初の試みに近かったです。

<%= form.check_box :privacy_disabled, 
                   {:checked => !@user.privacy_disabled}, 
                   0,
                   1 %>

したがって、チェックボックスによって返される値は反転され、最初からチェックされているかどうかも手動で反転されます。

于 2010-08-20T00:14:38.840 に答える
6

最もエレガントなソリューションではありませんが、次のようなことができます。

  1. これらのメソッドをユーザー モデルに追加します。

    def privacy_enabled=(val)
      self.privacy_disabled = val == "0"
    end
    def privacy_enabled
      !privacy_disabled
    end
    
  2. フォームを次のように変更します。

    <%= form.check_box :privacy_enabled %>
    

繰り返しますが、エレガントではありませんが、機能します。

于 2010-08-19T23:30:18.153 に答える