1

Добрый день.
У меня есть рельсы 3.1. и камень Paperclip
в моем приложении для управления компаниями контрактов:
gem Paperclip интерполяция

MODEL  
    model/contract.rb 
     has_many :contract_files 

    model/contract_file.rb 
     has_attached_file :data 

CONSOLE 
Loading development environment (Rails 3.1.0) 

1.9.2p290 :001 > cont = Contract.first 

    Contract Load (0.1ms) SELECT "contracts".* FROM "contracts" LIMIT 1  
     => #Contract id: 1, organization: "Com.org", and etc .... 

1.9.2p290 :002 > cont.contract_files 

    ContractFile Load (0.2ms) SELECT "contract_files".* FROM "contract_files" 
    WHERE "contract_files"."contract_id" = 1  
     => #[ContractFile id: 88, caption: "asdf", and etc ...] 

ВОПРОС
Будьте добры, скажите мне, пожалуйста, как я могу извлечь ID договора: 1 в

model/contract_files.rb  
     has_attached_file :data, 
     :url => "/assets/paperclip/:contract_id/:filename" 

ПРИМЕР ЧТО Я ХОЧУ ПОЛУЧИТЬ
На http // localhost: 3000/контракты/1 получить такие файлы: http//localhost:3000/contracts/1/assets/paperclip/1/XXX.pdf http // localhost: 3000/контракты/1/assets/paperclip/1/XXY.pdf http // localhost: 3000/контракты/1 /assets/paperclip/1/XXZ.pdf

Большое спасибо за помощь.

ответ

1

Если я это ясно, что вы могли бы сделать это следующим образом:

Contract.find(params[:id]).contract_files.map { |cf| cf.data.url } 
# Dont't forget to handle nonexistent id 

U pd,

Чтобы разместить contract_id в URL, вы должны восстановить по умолчанию скрепку: параметры пути этот путь:: URL и

#model/contract_file.rb 
has_attached_file :data, :path => "public/contracts/:parent_id/assets/paperclip/:id.:extension", :url => "/contracts/:parent_id/assets/paperclip/:id.:extension" 

Paperclip.interpolates :parent_id do |a, s| 
    a.instance.contract.id 
end 
+0

1.9.2p290: 007> cont.contract_files.map {| cf | cf.data.url} => ["/assets/paperclip/data/88/original/download.jpg?1328369668"], но, как вы можете видеть, до сих пор нет контракта.id – itsnikolay

+0

Ошибка Getiing http: //img40.imageshack .us/img40/836/screenshotat20120204212.png – itsnikolay

+0

Есть ли принадлежность_to: директива контракта в определении ContractFile? – icanhazbroccoli

Смежные вопросы