рельсы 3.1 скрепка - PullRequest
       19

рельсы 3.1 скрепка

2 голосов
/ 28 октября 2011

Я начинаю работать с плагином paperclip, но у меня не получается получить изображение, которое будет отображаться в процессе разработки.Я добавил следующее в мой файл config / environment / development.rb:

Paperclip.options[:command_path] = "/usr/local/bin/"

Я установил imagemagick и ghostscript через менеджер пакетов homebrew.Затем я добавил гем скрепки в свой гемфайл и запустил установку пакета.Затем я запустил

rails g paperclip carrier_data asset
rake db:migrate

Затем я перешел к своей модели данных носителя и добавил

has_attached_file :asset

После этого я изменил частичную форму, чтобы добавить полученный код, чтобы я мог загружать изображения.Я использую простой гем формы, и это следующий код, который я ввел.

<%= simple_form_for [:carrier_datum, @carrier_datum], :url => carrier_datum_path, :html => { :multipart => true} do |f| %>
<div>   
  <%= f.input :asset, :as => :file, :label => "Upload File" %>
</div>

Наконец я пошел на страницу показа и добавил следующий код, чтобы я мог просмотреть изображение:

<%= image_tag @carrier_datum.asset.url %>

Когда я пытаюсь создать новую запись базовых данных, я получаю следующее сообщение:

No route matches {:action=>"show", :controller=>"carrier_data"}

Журналы выглядят следующим образом:

ActionView::Template::Error (No route matches {:action=>"show", :controller=>"carrier_data"}):
1: <%= simple_form_for [:carrier_datum, @carrier_datum], :url => carrier_datum_path, :html => { :multipart => true} do |f| %>
2:   <% if @carrier_datum.errors.any? %>
3:     <div id="error_explanation">
4:       <h2><%= pluralize(@carrier_datum.errors.count, "error") %> prohibited this carrier_datum from being saved:</h2>
app/views/carrier_data/_form.html.erb:1:in    `_app_views_carrier_data__form_html_erb__2372678434167691626_2513245300'
app/views/carrier_data/new.html.erb:3:in `_app_views_carrier_data_new_html_erb___55769200685419080_2513267980'
app/controllers/carrier_data_controller.rb:30:in `new'

Я использую рельсы 3.1,с postgresql в качестве моей базы данных, если это вообще помогает.

Вот вывод маршрутизации rake

carrier_data GET    /carrier_data(.:format)           {:action=>"index", :controller=>"carrier_data"}
                     POST   /carrier_data(.:format)           {:action=>"create", :controller=>"carrier_data"}
   new_carrier_datum GET    /carrier_data/new(.:format)       {:action=>"new", :controller=>"carrier_data"}
  edit_carrier_datum GET    /carrier_data/:id/edit(.:format)  {:action=>"edit", :controller=>"carrier_data"}
       carrier_datum GET    /carrier_data/:id(.:format)       {:action=>"show", :controller=>"carrier_data"}
                     PUT    /carrier_data/:id(.:format)       {:action=>"update", :controller=>"carrier_data"}
                     DELETE /carrier_data/:id(.:format)       {:action=>"destroy", :controller=>"carrier_data"}
               pages GET    /pages(.:format) 

Если я удаляю вызов простой формы и использую частичную запись обычной формы, например, так:1027 *

<%= form_for(@carrier_datum, :html => { :multipart => true}) do |f| %>
<div>   
    <%= f.label :asset, "Upload File:"%>
    <%= f.file_field :asset %>
</div>

Я все еще получаю проблему с разбитым изображением, и мои журналы говорят, что изображение отсутствует.

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Я закончил тем, что переключился на carrierwave , и я должен сказать, что это гораздо лучшая жемчужина для загрузки файлов. Если вы работаете с rails 3.1, это лучшее решение для загрузки файлов.

0 голосов
/ 29 октября 2011

В модели необходимо указать, куда поместить загружаемые файлы

Например:

has_attached_file :asset,
:url  => "/assets/:id/:basename.:extension",
:path => ":rails_root/public/assets/:id/:basename.:extension"

В общей папке рельсов создайте папку «assets».

При каждой загрузке будут создаваться папки с идентификатором и загруженным файлом.

...