Rails 3 - 创建复选框(与_destroy相反)

6

我有一个Query模型,它与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

最后,我的观点是:目前我将复选框与销毁属性相关联,我认为这将完全相反于我的意图。

<%= 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应用程序,所以欢迎任何建议。
1个回答

10

默认情况下,check_box表单助手的值是将checked_value设置为'1'并将unchecked_value设置为'0'。因此,要反转销毁复选框的行为,只需切换这些值。

<%= builder.check_box :_destroy, {}, '0', '1' %>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接