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:
Mein _image
partially würde ungefähr wie folgt aussehen:
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.
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:
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 %)
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%?
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.
Tags und Links ruby-on-rails organization partial-views