Ich habe das Bedürfnis, mich zu entschuldigen, wenn ich so eine simple Frage gestellt habe, aber ich bin immer frustrierter mit den Rails Guides. Ich bin sicher, dass sie meine Frage beantworten, aber sie bieten nicht genügend Kontext für mich, um wirklich zu verstehen, wie man anwenden kann was sie mir geben. Google ist auch keine große Hilfe, obwohl ich vielleicht nur nach den falschen Begriffen suche. Mit diesem Disclaimer gehe ich einfach weiter und frage:Eine Auswahl mit Modelldaten in Rails füllen
Ich habe eine Image
, die HABTM Album
. Um das zu unterstützen, habe ich eine albums_images
Tabelle mit image_id
und album_id
Felder (keine anderen). Für das Leben von mir kann ich nicht herausfinden, wie ich meine Bildform teilweise ausfüllen soll, damit der Benutzer die Alben auswählen kann, zu denen ein neu hochgeladenes Bild gehören soll.
Ich lerne Schienen, also will ich wirklich nur die Grundlagen. Ich bin mir sicher, dass es phantastische Plugins gibt, die das auf hundert verschiedene Arten machen, aber ich würde gerne zuerst die Grundlagen lernen und von dort aus aufbauen. Meine Form ist teilweise ziemlich viel Lehrbuch:
<% form_for(@image, :html => { :multipart => true }) do |f| %>
# All the basics you'd expect to see.
<% end %>
Mein letzter Versuch funktioniert nicht besser als jede andere Änderung Ich habe versucht, aber es sieht wie folgt aus:
<p>
<%= f.label :album_id %>
<%= f.select(:album_id, current_user.albums, :id, :name) -%>
</p>
Noch einmal, ich erkenne die Einfachheit der Frage, die ich stelle, und ich habe gelesen, was ich finden kann, aber ich konnte es nicht zu einer vollständigen Lösung zusammenfügen. Es scheint viele Wege zu geben, dies zu tun, aber keine wirkliche Diskussion über jede einzelne, ihre Vor- und Nachteile oder wie man sie wirklich in einem größeren Kontext verwendet.
Danke.
UPDATE: Ein paar Tasten zu beachten und eine Code-Korrektur. Erstens gibt es eine HABTM-Beziehung zwischen Bildern und Alben. Keine der Modelltabellen hat einen FK, der direkt auf den anderen verweist. Zweitens sollte die Album-Sammlung als current_user.albums
(korrigiert oben) zugegriffen werden. Ein Benutzer has_many
Alben und ein Album belongs_to
Benutzer.
UPDATE: Auf Antrag des theIV unten, zur Zeit, mit diesem Code:
22: <p>
23: <%= f.label :album_id %>
24: <%= f.select(:album_id, current_user.albums.collect {|a| [a.name, a.id]}) -%>
25: </p>
ich diesen Fehler:
undefined method `album_id' for #<Image:0x1042ec110>
Ich erhalte den Fehler in Zeile 24.
Können Sie erklären, welche Art von Fehler Sie bekommen? Oder veröffentlichen Sie etwas von der Ausgabe Ihres Entwicklungsprotokolls? – theIV
Das ist die Sache, die Fehler sind alle abhängig davon, welche Variation ich verwende. Oftmals gab es jedoch eine Art Merge-Fehler oder einen fehlenden Methodenfehler für "album_id". Im Moment mit diesem Code: 22: \t
23: \t \t <% = f.label: album_id%> 24: \t \t <% = f.select (: album_id, current_user.albums.collect { | a | [a.name, a.id]}) -%> 25: \t
ich diesen Fehler: nicht definierte Methode 'album_id‘ für #Sorry, ich nahm an, Kommentare würden Code-Blöcke erlauben. Ich werde dem ursprünglichen Beitrag ein Update hinzufügen. –