2017-11-02 4 views
1

In meiner Trailblazer-Zelle mache ich eine ziemlich dynamische Form. Ich möchte so etwas wie dies tun:Rendern von Teilformularen in Trailblazer-Zellen

Konzepte/card_form/views/_deck_form.erb *

<%= simple_form_for [parent,card] do |f| %> 
    <div class='row'> 
    <div class='col-md-6'> 
     <%= render '_target_sentence', locals: { f: f } %> 
    </div> 

Konzepte/card_form/views/_target_sentence.erb

<%= f.input :target_sentence_text, 
     input_html: { class: 'target-sentence', value: card.target_sentence.sentence }, 
     label: "#{target_language} Sentence" %> 

Es gibt ziemlich viel mehr in der _target_sentence teilweise, aber ich habe es hier vereinfacht. Das Problem ist, ich nicht die f-Formular-Builder passieren kann

Der obige Code gibt:

wrong number of arguments (given 2, expected 0..1)

Eine weitere Variante:

<%= render '_target_sentence' %> 

undefined local variable or method `f' for #<CardForm::Cell:0x007fc8eb7eaa48>

Antwort

1

ich sehr, sehr empfehlen Vermeiden Sie die Verwendung von Teiltönen bei der Verwendung von Zellen.

Einer der Hauptgründe für die Verwendung von Zellen ist die Verwendung von Teiltönen. Was würde ich stattdessen empfehlen, eine Zelle namens TartgetSentence zu erstellen, die params, und erstellen Sie diese "teilweise" -Ansicht, dann rufen Sie diese Zelle anstelle der render "_target_sentece" Sie tun.

Zellen sind ViewObjects, daher sollten Sie sie als Objekte behandeln. Definieren Sie sie so oft wie Sie möchten und konstruieren Sie dann Ihre "Master" -Zelle und die entsprechende Ansicht aus diesen Ansichtsobjekten, und rufen Sie sie dann auf, wenn Sie sie benötigen. Das ist teilweise der Grund, warum sie schneller sind als Partialtöne.

S.S .: Sie können auch gerne unseren offiziellen Gitter Kanal für Trailblazer besuchen - Sie können dort schneller Hilfe bekommen. https://gitter.im/trailblazer/chat

+0

Danke @konung Ich habe Post auf Gitter. Ich wollte einen Weg finden, eine komplexe Form mit einer bedingten Logik aufzubrechen, auf der Felder erscheinen ... aber es scheint nicht möglich zu sein, Formularersteller zu umgehen. Ich landete wieder auf Rails Teiltagen. Wenn es eine Lösung gibt, wäre ich daran interessiert, sie zu hören. Prost – ardochhigh