Je ressens le besoin de m'excuser pour avoir posé une question aussi simpliste, mais je suis de plus en plus frustré par les guides Rails. Je suis sûr qu'ils répondent à ma question, mais ils ne fournissent pas assez de contexte pour que je comprenne vraiment comment appliquer ce qu'ils me donnent. Google n'est pas non plus d'une grande aide, bien que je sois juste en train de rechercher les mauvais termes/expressions. Compte tenu de cet avertissement, je vais juste aller de l'avant et de demander:Remplir une sélection avec les données du modèle dans les rails
J'ai un Image
que HABTM Album
. Pour soutenir cela, j'ai une table albums_images
avec des champs image_id
et album_id
(pas d'autres). Pour la vie de moi, je ne peux pas comprendre comment remplir mon formulaire d'image partielle afin que l'utilisateur puisse sélectionner les albums auxquels une image nouvellement téléchargée devrait appartenir. Je suis en train d'apprendre les Rails, donc je veux juste les bases. Je suis sûr qu'il existe des plugins de fantaisie pour faire cela de cent façons, mais je voudrais apprendre les bases en premier et construire à partir de là. Ma forme partielle est à peu près manuel:
<% form_for(@image, :html => { :multipart => true }) do |f| %>
# All the basics you'd expect to see.
<% end %>
Ma dernière tentative ne fonctionne pas mieux que toute autre variation que je l'ai essayé, mais il ressemble à ceci:
<p>
<%= f.label :album_id %>
<%= f.select(:album_id, current_user.albums, :id, :name) -%>
</p>
Encore une fois, je Reconnaître la simplicité de la question que je pose et j'ai lu ce que je peux trouver, mais je n'ai pas été capable de le mettre ensemble dans une solution complète. Il semble y avoir plusieurs façons de le faire, mais pas vraiment de discussion sur chacun d'entre eux, leurs avantages/inconvénients ou comment les utiliser réellement dans un contexte plus large.
Merci.
MISE À JOUR: Un couple de clés à noter et une correction de code. Premièrement, il existe une relation HABTM entre les images et les albums. Aucune table de modèle n'a de FK référençant directement l'autre. Deuxièmement, la collection de l'album doit être accessible en tant que current_user.albums
(corrigé ci-dessus). Un utilisateur has_many
albums et un album belongs_to
utilisateur.
MISE À JOUR: À la demande de theIV ci-dessous, pour le moment, avec ce code:
22: <p>
23: <%= f.label :album_id %>
24: <%= f.select(:album_id, current_user.albums.collect {|a| [a.name, a.id]}) -%>
25: </p>
je reçois cette erreur:
undefined method `album_id' for #<Image:0x1042ec110>
Je reçois l'erreur dans la ligne 24.
Pourriez-vous expliquer quel type d'erreur vous obtenez? Ou, publiez une partie de la sortie de votre journal de développement? – theIV
C'est la chose, les erreurs sont partout en fonction de la variation que j'utilise. Souvent, cependant, il y a eu une sorte d'erreur de fusion ou une erreur de méthode manquante pour "album_id". À l'heure actuelle, avec ce 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
Je reçois cette erreur: méthode non définie album_id » pour #Désolé, j'ai supposé que les commentaires autoriseraient les blocs de code. Je vais ajouter une mise à jour à la publication originale. –