2012-06-26 14 views
5

En mis vistas de programa cada vez que intento mostrar una imagen con image_tag builder rails no busco imágenes en la carpeta pública dentro de mis vistas. .Rails 3 no se ve en carpetas públicas para activos en Mostrar método

por ejemplo:

<%= image_tag "thumbnails/fish.jpg" %> 

producirá esto:

ActionController::RoutingError (No route matches [GET] "/uploads/thumbnails/fish.jpg"): 

estoy usando la gema clip para mi modelo de carga y estoy ahorrando archivos t o una carpeta diferente a la carpeta pública por razones de seguridad, y sí, esta vista de programa ocurre dentro del controlador de carga ...

En mi modelo de carga, utilizo esta línea para guardar las cargas en una carpeta no pública:

has_attached_file :upload, :path => ":rails_root/:class/:id/:basename.:extension", 
          :url => ":rails_root/:class /:id/:basename.:extension" 

rutas Rake:

upload GET /uploads/:id(.:format)                 {:action=>"show", :controller=>"uploads"} 
     PUT /uploads/:id(.:format)                 {:action=>"update", :controller=>"uploads"} 
     DELETE /uploads/:id(.:format)                 {:action=>"destroy", :controller=>"uploads"} 
       /download/:id(.:format)                {:controller=>"uploads", :action=>"download"} 

Editar Nota: Si yo hago explícitamente una etiqueta img src y el punto de la imagen a mi funciona muy bien en mi muestran vistas por lo que No creo que sea un problema de permiso.

+0

¿Cuál es la ruta exacta a sus imágenes? –

+0

rails_app/public/images/thumbnails/image.jpg – Noz

Respuesta

7

La respuesta era bastante simple, y no puedo creer Carriles está siendo este exigente pero necesitaba tener una diagonal al comienzo de la ruta como así:

"thumbnails/fish.jpg" 

convierte

"/thumbnails/fish.jpg" 

todavía estoy curioso en cuanto a por qué esto es sólo un problema en las vistas no son del índice ...

+0

Por vistas sin índice, ¿quiso decir los que no son 'http: // ejemplo.com /', sino 'http: // ejemplo.com/someview' o' http:// example.com/anotherview'? Si es así, entonces la diferencia es: tener una barra diagonal define una ruta absoluta desde su vista de índice; sin la barra inicial, es una ruta relativa, lo que significa que está accediendo a '/ someview/thumbnails/fish.jpg', que es la ruta incorrecta. –

+0

Quise decir literalmente la ruta de índice. Evidentemente, existe una diferencia entre 'GET/model' y' GET/model/id' cuando se sirven activos. O eso o hay un problema con mis rutas. – Noz

2

Es posible que tenga que cambiar esta línea true:.

config.serve_static_assets = false 

en el entorno/* archivo de rb (por ejemplo development.rb).

O he visto que este es un problema de permisos en el directorio en cuestión, por lo que un CHMOD 777 en el directorio puede resolverlo/apuntar en la dirección correcta.

Aquí es un SO ticket en un problema similar

+0

Realmente no tengo esa línea en ninguno de mis entornos.rbs - Estoy usando Rails 3.1.3 – Noz

+0

No está allí porque ya está en falso, pero tú puede agregarlo, estableciéndolo en verdadero – vemv

Cuestiones relacionadas