Paperclip czy Attachment_fu

Witam.

Paperclip czy Attachment_fu?
Które z powyższych wybrać do dołączenia pliku? Nie będą to żadne obrazki tylko pdf, doc itp. Nie potrzeba żadnego skalowania obrazków, galerii itp.
Środowisko Windows, przynajmniej w fazie tworzenia.
Kiedyś chciałem coś dołączyć za pomocą paperclipa w windows i miałem problem, nie wnikałem jaki.

Pozdrawiam
Sebastian

Co Ci będzie wygodniej, osobiście polecam paperclip. Obydwa działają na windowsie tylko zainstaluj odpowiednie imagemagick i rmagik gem, nie pamiętam który poszukaj w googlu.

Paperclip, skoro nie będzie obrazków to nie potrzebujesz Rmagick’ów i tym podobnych, daj znać czy działa.

Nie działa.
Zassałem najnowsze paperclip i skopiowałem do vendor\plugins.
Na końcu enviroment.rb dodałem require ‘paperclip’.
W modelu dodałem:

class Development < ActiveRecord::Base has_attached_file :document end
W widoku doałem jak trzeba:

<% form_for :development, :html => {:multipart => true} do |f| %> i <%= f.file_field :document %>
Nie instalowałem żadnym RMagic itp.
Bo wgrywam tylko pdf i doc i xls.

Przy próbie dodania nowego rekordu wywala mnie znów w formularzu do dodawania rekordu.

Fragment z logu:

Parameters: {“commit”=>“Dodaj”, “authenticity_token”=>“d55142fadd5ef82259b11456df4ac75cacf8040a”, “action”=>“new”, “development”=>{“manager_id”=>“1”, “title”=>“aaa”, “maker_id”=>“2”, “document”=>#<File:C:/DOCUME~1/splewa/USTAWI~1/Temp/CGI.1348.12>, “year(1i)”=>“2009”}, “controller”=>“developments”}
Rendering template within layouts/developments
Rendering developments/new

W bazie są odpowiednie pola:
document_file_name, document_content_type, document_file_size w tabeli developments.

Czy ktoś może mi wskazać gdzie tkwi błąd. Robiłem zgodnie z wieloma tutorialami dostępnymi w sieci.

Rails 2.1.0 Paperclip: 2.2.8, Windows

Pozdrawiam

  1. Daj kod kontrolera
  2. W widoku wyświetl sobie nad formularzem
    <%= error_messages_for :development %>

Teraz pokaż co wyskakuje :wink:

Kontroler:

[code=“ruby”]class DevelopmentsController < ApplicationController

GET /developments

GET /developments.xml

def index
@developments = Development.find(:all)

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @developments }
end

end

GET /developments/1

GET /developments/1.xml

def show
@development = Development.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @development }
end

end

GET /developments/new

GET /developments/new.xml

def new
@development = Development.new

respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @development }
end

end

GET /developments/1/edit

def edit
@development = Development.find(params[:id])
end

POST /developments

POST /developments.xml

def create
@development = Development.new(params[:development])

respond_to do |format|
  if @development.save
    flash[:notice] = 'Development was successfully created.'
    format.html { redirect_to(@development) }
    format.xml  { render :xml => @development, :status => :created, :location => @development }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @development.errors, :status => :unprocessable_entity }
  end
end

end

PUT /developments/1

PUT /developments/1.xml

def update
@development = Development.find(params[:id])

respond_to do |format|
  if @development.update_attributes(params[:development])
    flash[:notice] = 'Development was successfully updated.'
    format.html { redirect_to(@development) }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @development.errors, :status => :unprocessable_entity }
  end
end

end

DELETE /developments/1

DELETE /developments/1.xml

def destroy
@development = Development.find(params[:id])
@development.destroy

respond_to do |format|
  format.html { redirect_to(developments_url) }
  format.xml  { head :ok }
end

end
end[/code]
Po dodaniu <%= error_messages_for :development %> nic się nie wyświetla nowego, żadnych błędów.

  1. Zrób @development.save! (z wykrzyknikiem) w akcji create, wtedy wywali wielki błąd z pełnym backtrace’em jeśli rekord się nie zapisze.

  2. respond_to jest passe :wink: używaj szablonów buildera

passe? więc co teraz jest w modzie, bo coś mi tu przemkneło

XML builder templates.