Organisieren von Teiltönen für eine polymorphe Ressource

8

Ich suche, wie andere ihre Partialtypen typischerweise für eine polymorphe Ressource organisieren.

Beispiel:

Ich habe Image was polymorph ist und je nachdem, was imageable ist, möchte ich die Dinge etwas anders anzeigen.

Ich habe eine partielle images/_image und kann render imageable.images aufrufen. Meine derzeitige Denkweise besteht darin, mein Bild teilweise prüfen zu lassen, welcher Typ imageable ist, und dann einen anderen Teil zu haben, der für diesen Fall spezifisch ist. Meine Organisation wäre etwas in der Art von:

%Vor%

Mein _image partially würde ungefähr wie folgt aussehen:

%Vor%

Scheint dies ein schlechter Ansatz zu sein oder die falsche Herangehensweise auszudünsten? Ich denke, es wäre viel schöner, einfach render imageable.images von überall her aufzurufen, als render :partial => ... überall aufrufen zu müssen.

Irgendwelche Ideen würden sehr geschätzt werden. Wie hast du es gemacht?

EDIT: Eine lange Zeit ist vergangen und ich frage mich immer noch, ob irgendjemand etwas dazu sagen kann. Werfen Sie ein Kopfgeld, um zu sehen, ob das Aufmerksamkeit erregt.

    
theIV 06.08.2010, 16:57
quelle

4 Antworten

2

In deinem Code ist es jetzt unklar, dass _product tatsächlich ein _image ist.

Ich denke, die Absicht in Rails ist, es so zu machen:

%Vor%

Dann rufen Sie in der _image partially:

auf

render :partial => imageable/#{image.type}", :image => image

Jetzt ist aus Ihrer Verzeichnisstruktur klar, was Ihr Polymorphismus ist.

(Hinweis: Ich habe das shared -Verzeichnis verwendet, aber natürlich, wenn Ihr Bild teilweise nicht zwischen Sichten geteilt wird, sollte es in einem Ansichtsverzeichnis sein, wie wenn Sie tatsächlich ein images_controller haben, sollte das Verzeichnis% co_de heißen %)

    
Tinco 26.05.2011 11:08
quelle
2

Ich denke, Sie haben den richtigen Ansatz, aber ich denke, der letzte Schritt für Sauberkeit besteht darin, die Bilder teilweise zu eliminieren, die einen anderen Teil auswählen, indem Sie stattdessen dieses Verhalten einem Helfer zuweisen. etwas wie ...

%Vor%

?

    
MissingHandle 28.05.2011 07:26
quelle
1

Ich bin ein bisschen unter dem Wetter, also kann ich es nicht testen. Aber du solltest einfach <%= render imageable.images %> einfügen und sehen, was es sagt. Es sollte funktionieren, weil es .modelname oder .class verwenden sollte :) Wenn es nicht funktioniert, würde ich tun, was Sie tun, wie oben erwähnt. Wenn es aber nicht klappt, kommet bitte mit was es sagt, denn dann werde ich wohl einen Patch auf den Rails-Core machen, der eigentlich so funktionieren sollte.

    
Mohammad El-Abid 21.05.2011 19:15
quelle
1

Ich denke, Ihre ursprüngliche Idee ist auf dem richtigen Weg, mit einer kleinen Anpassung:

%Vor%     
Zubin 25.05.2011 20:05
quelle