6

OutputFields への has_many 関係を持つクエリ モデルがあります。クエリ コントローラの新しい関数で、クエリ インスタンス内にいくつかの OutputFields を作成します。私のフォームでは、オブジェクトが保存されているかどうかを各チェックボックスで判断したいと考えています (チェックは、この OutputField のインスタンスをデータベースに保存することを意味します)。これどうやってするの?

私のモデル:

class Query < ActiveRecord::Base
  attr_accessible :description, :name

  has_many :output_fields, :dependent => :destroy
  accepts_nested_attributes_for :output_fields
end

class OutputField < ActiveRecord::Base
  attr_accessible :query_id, :column_name, :table_name

  belongs_to :query
end

私のクエリコントローラーの関連セクション。構造は別モデルです。

  # GET /queries/new
  # GET /queries/new.json
  def new
    @query = Query.new
    Structure.columns.each do |column|
      @query.output_fields.build( :table_name => Structure.table_name, :column_name => column.name )
    end

    respond_to do |format|
      format.html # new.html.erb
      format.json { render :json => @query }
    end
  end

最後に私の見解です。現在、チェックボックスを destroy 属性にリンクしています。これは、私が望んでいることとは正反対のことをすると思います。

<%= form_for(@query) do |f| %>
  <%= f.fields_for :output_fields do |builder| %>
    <div class="field">
      <%= builder.check_box :_destroy %>
      <%= builder.label :_destroy, builder.object.column_name %>
    </div>
  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

明らかでない場合は、単純なクエリ ビルダー用のユーザー インターフェイスを生成しようとしています。これは私の最初の Rails アプリなので、アドバイスをいただければ幸いです。

4

1 に答える 1

9

デフォルトでは、check_box フォーム ヘルパーの値は、checked_value を '1' に、unchecked_value を '0' に設定することです。したがって、破棄チェックボックスの動作を逆にするには、これらの値を切り替えるだけです。

<%= builder.check_box :_destroy, {}, '0', '1' %>
于 2013-09-26T04:33:09.380 に答える