これを行うには、仮想属性を追加することをお勧めします。
たとえば、app/models/idea.rb
次のようになります。
class Idea < ActiveRecord::Base
attr_accessor :is_private
def is_private
privacy == 'private'
end
def is_private=(true_or_false)
self.privacy = true_or_false ? 'private' : 'public'
end
end
次のような形で使用できます。
<%= form_for(@idea) do |f| %>
<%= f.check_box :is_private %>
<%= f.submit %>
<% end %>
Rails の規約に従い、生成されたチェックボックスの ID を使用することをお勧めします: idea_is_private
.
別の方法で名前を付けたい場合は、次の方法で行うことができます。
<%= f.check_box :is_private, :id => 'make-private' %>
ps ほとんどの人は ID にスペースを使用しません。
pss 仮想属性の仕組み:
f.check_box :is_private
レコードの読み取りと書き込みに使用するメソッドを Rails に通知します。この場合、チェックボックスの値は になります@idea.is_private
。そして、checobox がチェックされると、次のようなコード@idea.is_private = true
が実行されます。
これを機能させるには、モデルに メソッドis_private
とメソッドを追加する必要があります。is_private=(true_or_false)