Fields_for sacar valor

<% fields_for_foto(foto) do |foto_form| %>
<%= image_tag("/images/foto.png") %> Foto:

            <%= foto_form.file_field :foto %>

<% end %>

Hola, supongo que es una chorrada, pero he probado y no me ha salido.
¿Como saco la string de :foto?

Si uso <%= foto_form.text_field :foto %> me aparece la url de la foto
dentro de un input como es lógico. Pero no consigo sacar ese texto para
una variable (la idea es ponerlo en un <%= image_tag %>).

Para que lo entendais: lo que quiero hacer esque si hay foto, se vea en
un <% image_tag %> y si no haya un campo para subirla.

Gracias.

En el método del controlador que llama a esta vista tienes que declarar
una
variable de instancia con el contenido del foto
def tu_metodo
@foto = Foto.find(params[:id])

end

en tu formulario, foto es una variable local, como no le has asignado
nada,
está vacia.

El 22 de enero de 2009 11:05, Javier G. <
[email protected]> escribió:

En realidad no esta vacía, es decir, sí hay una foto, sí que me muestra
la url de ella (este no es el problema).

El problema, no es que no me lea las fotos existentes, que sí lo hace.
Quiero que al ser un metodo de edicion, que cargue las que ya hay para
poder visualizarlas y/o que me deje editar la ruta. (ESTO LO HACE)

La idea es EDITAR una lista de fotos de este modo

SI HAY FOTO
-visualizar foto con <%= image_tag %> <-- PROBLEMA! :frowning:
SINO
-Añadir foto con file_field
END

Se hacerlo todo (no tiene mayor dificultad), menos conseguir la url en
una string para pasarselo a <%= image_tag %>.

He probado con cosas erroneas como:
<%= image_tag(foto_form.text :foto) %>
<%= image_tag(foto_form.value :foto) %>
<%= image_tag(foto_form.text_field :foto) %> <-- Este pone una foto con
url “<Input text[…etc…]foto_empresa.jpg”
etc…

Y repito si hago <%= foto_form.text_field %> me aparece un input con la
url que tiene la foto, es decir pone /imagenes/foto_empresa1.jpg.

Gracias.

2009/1/22 Javier G. [email protected]

Y repito si hago <%= foto_form.text_field %> me aparece un input con la
url que tiene la foto, es decir pone /imagenes/foto_empresa1.jpg.

Si el objeto tiene un método “url” ¿no funciona <%= foto.url %>?

El día 22 de enero de 2009 12:49, Javier G.
[email protected]
escribió:> He probado con cosas erroneas como:

<%= image_tag(foto_form.text :foto) %>
<%= image_tag(foto_form.value :foto) %>
<%= image_tag(foto_form.text_field :foto) %> ← Este pone una foto con
url “<Input text[…etc…]foto_empresa.jpg”

Le tienes que pasar un string con la url… y como la url está en
foto.url prueba con:
<%= image_tag( foto.url ) %>

2009/1/22 Javier G. [email protected]

Lo he intentado como me habeis dicho y aun no lo he conseguido. :frowning:

El metodo foto.url me dice que no existe el metodo.

Pero ¿sabes si ese método debería existir en el objeto Active Record?
¿Existe la columna en la base de datos?

Creo que necesitas repasar los principios más básicos de Rails y de
Active
Record, para poder comprender qué son las variables y métodos que
manejas

Lo he intentado como me habeis dicho y aun no lo he conseguido. :frowning:

El metodo foto.url me dice que no existe el metodo.

No hace falta que lo repase, gracias. Url no es el nombre que tiene mi
columna en la bdd, os pongo url porque sepais que es la direccion que
deberia tener guardada. :wink:

(Tras un rato…)

Ya he descubierto lo que pasaba! Era una falta ortográfica al copiar una
variable.

Lo siento por el lapsus, pero gracias a todos, sobre todo a Manuel, que
con su comentario, me ha hecho ir a la bdd a comprobar todas las
columnas y darme cuenta de mi “herror” :wink: