Dies sollte für jemanden einen Layup sein ...Rubin/Rails: dynamisch Attribut in gemeinsam genutzten Teil
Ich versuche, ein Formularfeld des Attributs zu ändern, je nachdem, welcher Controller/Modell der Teil ruft das Formular enthält, Felder ...
Das Problem (unten) ist mit parent_id
..., die eine von zwei Spalten in einer Hunde-Tabelle verweist. Es muss entweder kennel_id
oder master_id
sein, je nachdem, welche Ansicht dieses Teil in gerendert wird.
nicht komfortabel genug, doch Ruby/Rails Sprache/Syntax/Werkzeuge, um diese dynamisch zu ändern, ohne in if/else
Aussagen zu verzetteln.
Ich bin eine teilweise geteilt aufrufen und in einer lokalen Variablen übergeben:
= render "dogs/form", :parent => @kennel
oder
= render "dogs/form", :parent => @master
Im Teil Ich mag würde zu:
= form_for ([parent, target.dogs.build]) do |f|
= render "shared/error_messages", :target => parent
.field
= f.label :name
= f.text_field :name
.field
= f.hidden_field :parent_id ### <= PROBLEM
.actions
= f.submit 'Save'
Danke! alle guten Ideen und sehr hilfreich! Ich hatte versucht, die Verwandtschaft polymorph zu machen, ABER es ist möglich und oft wahrscheinlich, dass ein Hund BEIDEN Zwinger UND einem Meister angehört ... und ich bin nicht sicher, ob das mit Polymorphie möglich ist?!? – Meltemi
versucht, einen anderen Hash wie in Ihrem zweiten Vorschlag zu übergeben (': foreign_key =>: master_id'), aber ich bekomme' undefinierte Methode 'foreign_key' für # '?!? Sollte nicht "': master_id' "jedes Vorkommen von" 'fremder_Schlüssel" wörtlich im Teil ersetzen? Stattdessen scheint es, 'fremder_key' in eine Art Methode zu verwandeln?!? seufz ... –
Meltemi
ah ... ': foreign_key' wird zu einer LOCAL-Variable' foreign_key' im partiellen .. so entfernt das ":" im partiellen und jetzt funktioniert es. Dies ist einer jener Fälle, in denen die Flexibilität von Ruby & Rails es tatsächlich (in vielerlei Hinsicht) für jemanden wie mich schwieriger macht, etwas zu lernen. Es gibt so viele Möglichkeiten, etwas zu schreiben, von dem ich nicht weiß, was die "Regeln" eigentlich sind ... wie jedes Mal, wenn ich eins lerne, es kaputt zu werden scheint ... –
Meltemi