0

check_box_tag を f.check_box に変換する必要がありますが、うまくいきません。

私のチェックボックスは

check_box_tag 'privacy', 1, (@idea.privacy=='private'), :id=>"Make Private"

したがって、名前 = 'privacy'、値 = 1、(@idea.privacy=='private') が true の場合にチェックされ、id "Make Private" があります。誰でも私を助けることができますか?ありがとう!

4

1 に答える 1

1

これを行うには、仮想属性を追加することをお勧めします。

たとえば、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)

于 2013-06-27T03:08:27.430 に答える