Не удается загрузить фотографию с помощью скрепки - PullRequest
2 голосов
/ 10 января 2010

Я использовал скрепку в своем веб-приложении, я использую это для создания нового продукта:

<% semantic_form_for @product do |f| %>  
  <% f.inputs do %>  
    <%= f.input :title %>  
    <%= f.input :price %>  
    <%= f.file_field :photo %>


    <%= f.input :category , :include_blank => false %>  
  <% end %>  
  <%= f.buttons %>  
<% end %>

И это, чтобы показать продукт:

<% semantic_form_for @product do |f| %>  
<%= image_tag @product.photo.url%>

  <% f.inputs do %>  
    <%= f.input :title %>  
    <%= f.input :price %>  
    <%= f.file_field :photo %>

    <%= f.input :category , :include_blank => false %>  
  <% end %>  
  <%= f.buttons %>  
<% end %>

И это мой продукт. Rb:

class Product < ActiveRecord::Base
  validates_presence_of :title, :price
  validates_numericality_of :price
  validates_uniqueness_of :title

  has_attached_file :photo
  attr_accessible :name, :category_id, :price, :title, :photo
  belongs_to :category
  has_many :order_items

end

Но после того, как я загрузил фотографию, она показывает путь к моему изображению так:

http://localhost:3000/photos/original/missing.png

Похоже, он не может загрузить фотографию с этой ошибкой:

No route matches "/photos/original/missing.png" with

{: метод =>: получить}

Ответы [ 2 ]

7 голосов
/ 10 января 2010

Я не уверен, что такое semantic_form_for, но с обычной form_for вы должны явно сказать, что это составная форма.

<% form_for(@thing, :html => {:multipart => true}) do |f| %>
  ....

Если вы этого не сделаете, содержимое полей загрузки файла не будет передано на сервер. Это HTML вещь ;)

0 голосов
/ 11 января 2010

Я думаю, что вы вставляете изображение в папку public / images в вашем приложении rails. И указывайте путь как в вашем браузере "/images/missing.png".

И ваш индекс будет

...