HalloRuby on Rails problème de téléchargement de photo
rails Version 2.3.5
Je rails d'apprentissage et je courir dans un problème.
Je fais des formes d'imbrication à partir des tutoriels de rails. J'ai changé la zone de texte dans un champ de données pour télécharger des photos et tout fonctionne.
Maintenant, je dois afficher les images téléchargées et je ne peux tout simplement pas le faire. J'ai essayé tout ce que je pouvais trouver sur le net mais rien n'a fonctionné.
PROBLÈME
J'ai le contrôleur de l'article qui traite l'article CRUD. à l'intérieur de l'article nouveau formulaire il est imbriqué un formulaire pour télécharger des images.
contrôleur de l'article
def code_image
@image_data = Photo.find(params[:id])
@image = @image_data.binary_data
send_data(@image, :type => @image_data.content_type,
:filename => @image_data.filename,
:disposition => 'inline')
end
modèle photo
def image_file=(input_data)
self.filename = input_data.original_filename
self.content_type = input_data.content_type.chomp
self.binary_data = input_data.read
end
articles/show.html.erb
<%=h @article.title %>
<%=h @article.body %>
<% for photos in @article.photos %>
<%= image_tag(url_for({:action => 'code_image',
:id => @article.photos.id})) -%>
<% end %>
articles/_formnew.html.erb
<% form_for (:article, @article,
:url => {:action=>'create'}, :html=>
{:multipart=>true}) do |f| %>
<%= f.label :title %><br />
<%= f.text_field :title %><br /><br />
<%= f.label :body %><br />
<%= f.text_area :body, :style => 'width: 600px;' %><br /><br />
<% f.fields_for :photos do |builder|%>
<%= builder.label :content, "Photo"%><br />
<%= builder.file_field :image_file %><br />
<% end %>
<br />
<%= f.submit "Create" %>
Merci
Etes-vous capable d'afficher l'image directement en accédant à l'URL redirigée vers votre action code_image? Est-ce que votre enregistrement Photo semble être complet/correct lorsqu'il est affiché à l'aide de la console Rails? Qu'en est-il lorsque vous regardez dans la table des photos dans votre base de données? Répondre à ces questions devrait vous aider à isoler où se situe le problème. –