2010-10-28 30 views
9

Tôi có một số vấn đề cố gắng để tùy chỉnh: tùy chọn url cho has_attached_file với kẹp giấy:: đường dẫn vàkẹp giấy tùy chỉnh: đường dẫn và: url

Tôi có một lớp đa hình có tên là "tài sản" mà ta có:

class Asset < ActiveRecord::Base 

    belongs_to :file_owner, :polymorphic => true 

    has_attached_file :picture, :styles => { ...}, 
      :url => "/attachments/user_:user/dressing_:dressing/garment_:garment/category_:category/:basename_:style.:extension", 
      :path => ":rails_root/public/attachments/user_:user/dressing_:dressing/garment_:garment/category_:category/:basename_:style.:extension" 
end 

các interpolations hoạt động tốt nhưng tôi muốn tùy chỉnh đường dẫn và url tùy thuộc vào file_owner_type

ví dụ, nếu tôi muốn con đường ảnh của người dùng, tôi muốn chỉ có

:path => ":rails_root/public/attachments/user_:user/:basename_:style.:extension 

Nhờ sự giúp đỡ của bạn

chỉnh sửa: Tôi nghĩ rằng tôi đã không giải thích bản thân mình một cách chính xác. Tôi đã có những nội suy được tạo ra và hoạt động tốt.

Tôi có mô hình nội dung đa hình, chủ sở hữu có thể là người dùng (là hình đại diện), quần áo hoặc áo quần. Và tôi muốn có đường dẫn khác nhau tùy thuộc vào chủ sở hữu tệp. Tại thời điểm này, khi tôi muốn thêm một tài sản may nó hoạt động tốt hình ảnh được đặt trong

"/attachments/user_x/dressing_y/garment_z/category_u/something_style.jpg"

nhưng nếu tôi chỉ muốn có một hình ảnh sử dụng con đường này sẽ đưa các avatar trong

"/attachments/user_x/dressing_/garment_/category_/something_style.jpg"

trong khi tôi muốn đặt nó trong

"/attachments/user_x/something_style.jpg".

nhờ

+0

bạn có thể hiển thị mã nội suy của mình ở đây ... có thể có vấn đề ở đó – Rohit

Trả lời

10

Something như thế này trong url:

:url => "/attachments/:path/:basename_:style.:extension", 

sau đó trong interpolations:

Paperclip.interpolates :path do |attachment, style| 
    if attachment.instance.file_owner_type == User.class.name 
    # first set the _user variable (something like self.owner.id.to_s) 
    return "user_" + _user 
    else 
    # first set the _user, _dressing, _garmet, _category variables from your models 
    return "user_#{_user}/dressing_#{_dressing}/garment_#{_garmet}/category_#{_category}/" 
    end 
end 

Chú ý rằng bạn cần phải đặt _USER, _dressing, _garmet, biến _category từ các mô hình của bạn.

Hy vọng điều này sẽ hữu ích.

+0

Thx nhưng tôi đã có nội suy hoạt động tốt. Tôi có một mô hình tài sản đa hình, chủ sở hữu có thể là người dùng (là hình đại diện), quần áo hoặc áo quần. Và tôi muốn có một con đường khác tùy thuộc vào chủ sở hữu tập tin. Tại thời điểm này, khi tôi muốn thêm một tài sản may mặc nó hoạt động tốt hình ảnh được đặt trong "/attachments/user_x/dressing_y/garment_z/category_u/something_style.jpg" nhưng nếu tôi chỉ muốn một hình ảnh người dùng con đường này sẽ đặt avatar trong "/attachments/user_x/dressing_/garment_/category_/something_style.jpg" trong khi tôi muốn đặt nó trong "/attachments/user_x/something_style.jpg". – guts

+0

Tôi đã thay đổi câu trả lời của mình theo lời giải thích trong câu hỏi. –

+0

Cảm ơn bạn đó chính xác là những gì tôi đang tìm kiếm ^ – guts

0

Thử: attachment.instance.file_owner.class.downcase trong nội suy được xác định của bạn.

Các vấn đề liên quan