我可以在Paperclip中获得可用的照片风格吗?

Ged*_*nas 4 ruby-on-rails paperclip

我有一些不同的样式(大小),所以我想在文本编辑器附近回显所有这些样式,供用户选择一个并在文本中使用.

为此,我需要在模型中获得所有已定义的样式.我怎样才能做到这一点?(我需要一种自动化方式,因为样式可能会改变)

  # Photo
  has_attached_file :photo, :styles => { 
    :sthumb => "150x150>",
    :crop => "200x200#",
    :thumb => "300x300>",
    :small => "500x500>", 
    :large => "900x900>",
    :xlarge => "2600x2600>"
    }, 
  :default_url => "missing.png",
  :url => "/items/:id/:style.:basename.:extension"
Run Code Online (Sandbox Code Playgroud)

Bor*_*aMa 7

has_attached_file您可以将样式定义直接传递给方法,而不是将它们存储在常量中,并在显示样式列表时使用它.

像这样的东西:

# Photo
DEFINED_STYLES = { 
  :sthumb => "150x150>",
  :crop => "200x200#",
  :thumb => "300x300>",
  :small => "500x500>", 
  :large => "900x900>",
  :xlarge => "2600x2600>"
}

has_attached_file :photo, :styles => DEFINED_STYLES, 
  :default_url => "missing.png",
  :url => "/items/:id/:style.:basename.:extension"
Run Code Online (Sandbox Code Playgroud)

然后你可以在其他地方使用相同的常量,例如在你的视图中:

<%= Photo::DEFINED_STYLES.keys.map(&:to_s).join(", ") %>
Run Code Online (Sandbox Code Playgroud)

另外一个选项

此外,Paperclip样式可以从模型实例本身获取,而无需定义常量,只需:

Photo.new.photo.styles.keys
=> [:sthumb, :crop, :small, :large, :xlarge]
Run Code Online (Sandbox Code Playgroud)

photo使用的Paperclip附件的名称在哪里has_attached_file?

  • 谢谢!完美的作品!我决定使用`Photo.new.photo.styles.keys`,因为在模型OK中为我的代码定义了样式:) (2认同)