2013-05-03 76 views
6

我有一個與OutputFields has_many關係的查詢模型。在我的查詢控制器的新函數中,我在查詢實例中構建了多個OutputField。在我的表單中,我希望每個複選框都確定是否保存了對象(檢查意味着將此實例的OutputField保存到數據庫中)。我怎樣才能做到這一點?Rails 3 - 創建複選框(_destroy對面)

我的模型:我的查詢控制器的

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應用程序,所以任何建議表示讚賞。

回答

9

默認情況下,check_box表單助手的值是將checked_value設置爲'1',將unchecked_value設置爲'0'。因此,要改變銷燬複選框的行爲,只需切換這些值。

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

不錯的把戲+1從未來它爲我工作。 – 2016-07-19 05:54:36