0

bekam ich eine verschachtelte Form des Kokon Juwel mit:Zählen hinzugefügten Felder in verschachtelter Form (Kokon)

_form.html.haml:

= simple_form_for @day do |f| 
    #task 
    = f.simple_fields_for :tasks do |task| 
     = render 'task_fields', f: task 
    .links 
     = link_to_add_association '+ Aufgabe', f, :tasks 
    = f.submit 

_task_fields.html.haml:

.nested-fields 
    = f.input :description, label: 'Name/Beschreibung: ' 
    = f.input :ur, as: :range, input_html: { min: '1', max: '4', id: "rangeInput#{@x}", oninput: "rangeOutput#{@x}.value = rangeInput#{@x}.value"} 
    %output#rangeOutput{:for => "rangeInput#{@x}", :name => "rangeOutput#{@x}"} 3 

    = link_to_remove_association "remove task", f 

days_controller.rb:

def create 
    @day = current_user.days.build(day_params) 
    @day.save 
    respond_to do |format| 
    if @day.save 
     format.html { redirect_to @day, notice: 'Day was successfully created.' } 
     format.json { render :show, status: :created, location: @day } 
    else 
     format.html { render :new } 
     format.json { render json: @day.errors, status: :unprocessable_entity } 
    end 
    end 
end 

ich muss Inkrementieren Sie eine Viariable Evertime die _task_fields-partial gerendert wird oder die link_to_add_association gedrückt wird.

+0

Könnten Sie Ihren relevanten Controller-Code teilen? – nicholas79171

Antwort

0

Erstellen Sie eine Migration, und fügen Sie Ihrem verschachtelten Attribut die Spalte :view_count hinzu.

In Ihrem Controller für die nested attribute, in der create Methode, um diese Zeile hinzu:

@day.increment!(:view_count) 

Dieses 1 wird jedes Mal, wenn die create Methode aufgerufen würde erhöhen. Ich bin nicht sicher, wie Sie die Nummer angezeigt werden soll, aber in der Ansicht Sie können dies tun:

<%= @day.view_count %> 

Oder Sie könnten @day.tasks.count verwenden, die Sie die Zählung geben würde.

+0

Ich dachte, dass die create-Methode nur einmal aufgerufen wird, wenn der submitbutton geklickt wird, aber ich muss eine Variable jedesmal erhöhen, wenn die 'link_to_add_association' gedrückt wird – Max

+0

Nachdem Sie auf die Schaltfläche link_to_add_association geklickt haben, wäre die nächste Sache, den verschachtelten Wert zu erstellen , so wird die create-Methode aufgerufen, die Ihnen die Anzahl der geschachtelten Werte geben würde –

+0

Ich denke, Sie verstehen mich falsch, ich brauche diese Variable, bevor die submitbutton gedrückt wird und bevor dies passiert ist, würde die createmethod nicht aufgerufen werden – Max

0

Je nach Bedarf können Sie dies einfach in CSS lösen. Also, wenn Sie eine Zeile/Artikel-Nummer anzeigen möchten, aber tatsächlich die Nummer ist nicht relevant für Sie, könnten Sie etwas tun wie: Auto-number table rows?

Sonst müssen Sie die js Rückrufe verwenden, wo nach dem Einfügen oder Entfernen Sie kann die Nummer berechnen und anzeigen. Als ein Beispiel könnten Sie dies verwenden, um die maximale Anzahl der zulässigen verschachtelten Elemente zu begrenzen: https://github.com/nathanvda/cocoon/wiki/How-to-limit-the-number-of-nested-fields

Verwandte Themen