2013-05-03 4 views
6

Ich habe ein Query-Modell mit einer has_many-Beziehung zu OutputFields. In der neuen Funktion meines Abfrage-Controllers erstelle ich mehrere OutputFields innerhalb der Abfrage-Instanz. In meinem Formular möchte ich, dass jedes Kontrollkästchen bestimmt, ob das Objekt gespeichert ist (ein Häkchen bedeutet, dass diese Instanz von OutputField in der Datenbank gespeichert wird). Wie kann ich das machen?Rails 3 - Kontrollkästchen für create (gegenüber von _destroy)

meine Modelle:

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 

relevanten Abschnitte meiner Abfragen Controller. Struktur ist ein anderes Modell.

# 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 

Endlich meine Ansicht. Im Moment verbinde ich das Kontrollkästchen mit dem Attribut destroy, was meiner Meinung nach genau das Gegenteil von dem ist, was ich will.

Wenn es nicht offensichtlich ist, versuche ich eine Benutzeroberfläche für einen einfachen Abfrage-Generator zu generieren. Dies ist meine erste Rails App, daher ist jeder Rat gefragt.

Antwort

9

Standardmäßig ist der Wert des check_box-Formularhelfers, um den checked_value auf '1' und den unchecked_value auf '0' zu setzen. Um das Verhalten des Kontrollkästchens "destroy" umzukehren, wechseln Sie einfach diese Werte um.

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

Nice Trick +1 aus der Zukunft hat es für mich gearbeitet. –

Verwandte Themen