Siento la necesidad de pedir disculpas por hacer una pregunta tan simplista, pero cada vez me siento más frustrado con las Rails Guides. Estoy seguro de que responden a mi pregunta, pero no proporcionan el contexto suficiente para que realmente entienda cómo aplicar lo que me están dando. Google tampoco es de mucha ayuda, aunque es posible que esté buscando los términos/frases equivocados. Dado ese descargo de responsabilidad, voy a seguir adelante y preguntar:Completando una selección con datos de modelo en Rails
Tengo un Image
que HABTM Album
. Para apoyar eso, tengo una tabla albums_images
con image_id
y album_id
campos (no otros). Por mi vida, no puedo encontrar la forma de rellenar mi formulario de imagen parcial para que el usuario pueda seleccionar los álbumes a los que debería pertenecer una imagen recién cargada.
Estoy aprendiendo Rails, así que realmente solo quiero los conceptos básicos. Estoy seguro de que hay complementos sofisticados para hacer esto de cientos de maneras, pero me gustaría aprender lo básico primero y construir a partir de ahí. Mi forma parcial es más o menos libros de texto:
<% form_for(@image, :html => { :multipart => true }) do |f| %>
# All the basics you'd expect to see.
<% end %>
mi último intento no funciona mejor que cualquier otra variación que he probado, pero parece que esto:
<p>
<%= f.label :album_id %>
<%= f.select(:album_id, current_user.albums, :id, :name) -%>
</p>
Una vez más, Reconozco la simplicidad de la pregunta que estoy haciendo y he leído lo que puedo encontrar, pero no he podido reunirlo en una solución completa. Parece que hay muchas maneras de hacerlo, pero no hay una discusión real de cada uno, sus pros/contras o cómo usarlos realmente en un contexto más amplio.
Gracias.
ACTUALIZACIÓN: Un par de claves para observar y una corrección de código. Primero, hay una relación HABTM entre imágenes y álbumes. Ninguna de las tablas modelo tiene un FK que hace referencia directamente al otro. En segundo lugar, se debe acceder a la colección del álbum como current_user.albums
(corregido arriba). Un usuario has_many
álbumes y un álbum belongs_to
usuario.
ACTUALIZACIÓN: A petición de theIV a continuación, por el momento, con este código:
22: <p>
23: <%= f.label :album_id %>
24: <%= f.select(:album_id, current_user.albums.collect {|a| [a.name, a.id]}) -%>
25: </p>
me sale este error:
undefined method `album_id' for #<Image:0x1042ec110>
consigo el error en la línea 24.
¿Podría explicarnos qué tipo de error está recibiendo? O bien, publique algo de la salida de su registro de desarrollo? – theIV
Esa es la cuestión, los errores han desaparecido según la variación que uso. A menudo, sin embargo, ha habido algún tipo de error de fusión o error de método faltante para "álbum_id". Por el momento, con este código: 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
consigo este error: método no definido 'album_id' para #Lo siento, asumí que los comentarios permitirían bloques de código. Añadiré una actualización a la publicación original. –