【问题标题】:Rails 3 - checkbox for create (opposite of _destroy)Rails 3 - 创建复选框(与 _destroy 相对)
【发布时间】:2013-09-26 12:33:09
【问题描述】:

我有一个与 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 应用程序,欢迎提出任何建议。

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-01
      • 2017-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 1970-01-01
      相关资源
      最近更新 更多