après Quelques recherches j'étais Capable d'ajouter des styles basés sur ma colonne model.rb strong> p> Ceci fonctionne en douceur, maintenant Je voulais ajouter du convert_option convert_option convert_option fort> aussi. Cela échoue en quelque sorte. P> image_class code>.
NoMethodError: undefined method `instance' for :all:Symbol
from /Users/AnsPoluke/Sites/nulike/app/models/movie_image.rb:8:in `block in <class:MovieImage>'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:431:in `[]'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:431:in `process_options'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:423:in `extra_options_for'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/style.rb:56:in `convert_options'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/style.rb:79:in `block in processor_options'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/style.rb:78:in `each'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/style.rb:78:in `processor_options'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:462:in `block in post_process_style'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:461:in `each'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:461:in `inject'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:461:in `post_process_style'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:454:in `block in post_process_styles'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:453:in `each'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:453:in `post_process_styles'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:445:in `block (2 levels) in post_process'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:393:in `_run__3861360263242897910__image_post_process__callbacks'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:80:in `run_callbacks'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/callbacks.rb:36:in `run_paperclip_callbacks'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:443:in `block in post_process'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:383:in `_run__3861360263242897910__post_process__callbacks'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/activesupport-4.0.2/lib/active_support/callbacks.rb:80:in `run_callbacks'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/callbacks.rb:36:in `run_paperclip_callbacks'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:442:in `post_process'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/attachment.rb:114:in `assign'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/paperclip-4.1.1/lib/paperclip/has_attached_file.rb:66:in `block in define_setter'
from (irb):2
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/railties-4.0.2/lib/rails/commands/console.rb:90:in `start'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/railties-4.0.2/lib/rails/commands/console.rb:9:in `start'
from /Users/AnsPoluke/.rvm/gems/ruby-2.1.0/gems/railties-4.0.2/lib/rails/commands.rb:62:in `<top (required)>'
from bin/rails:4:in `require'
5 Réponses :
Appliquez-le à tous depuis que c'est ce que vous faites de toute façon? Échec de la création d'un processeur de papier p> p>
Merci! Les options de convertis exactes de la nouvelle couverture code> code> ne sont pas encore claires, alors je l'ai modifiée en amélioré code> car il diffère certainement de l'affiche code>
Qu'en est-il de mettre cela dans décider_styles code>:
styles [: thumb] = ["30x45!" ,: jpg, {: convert_options => {: tout => "-Flop"}}] < / code> Je pense que vous pouvez définir convert_options dans un style individuel
Remarque: je n'ai pas vérifié que sur le code de travail
Il semble que l'argument du bloc passé: convert_option est déjà une instance, pas la pièce jointe (par opposition à l'option Styles, où il s'agit d'une pièce jointe)
Essayez: p> BTW Votre code sera bien meilleur si vous extrayez les données de configuration, par exemple: P> IMAGE_OPTIONS = {
poster: {
styles: {
thumb: {
geometry: "30x45!",
format: :jpg,
convert_options: '-flop',
},
standard: {...}
expanded: {...}
big: {...}
}
},
cover: {
styles: {...}
Je peux voir que l'exception sort de la console / IRB. Comment appelez-vous là-bas qui provoque l'exception?
Merci beaucoup! La dernière mise à jour a résolu le problème. Bounty bien mérité :)
Je pense que cela ne fonctionne plus :( L'instance a été remplacée par le symbole (: tous)
La réponse approuvée ne fonctionne pas. Il peut être lu dans les commentaires et l'auteur reconnaît qu'il n'a pas été testé en code.
Ce code L'approche correcte consiste à avoir Pour garder ma réponse au même endroit, j'ai mis tout le code en ligne et omis tous les styles à côté de convert_options code> à l'intérieur des styles code> lambda; L'avoir comme une lambda distincte ne fonctionne pas, du moins pour la version de papier 4.1 et la plus haute. p>
Thumb code>. Évidemment, pour mettre en œuvre cela, vous devez conserver la méthode
décider_convert_options code>. P> p>
Le code a fonctionné pour moi ... Qu'est-ce qui n'a pas fonctionné à la vôtre?
J'ai continué à obtenir nométhoderror: méthode non définie "instance" pour: TOUT: symbole code> jusqu'à ce que je l'ai changé sur le code ci-dessus.
Hmm étrange, je me rappelle que cela a fonctionné pour moi ... mais c'est génial d'avoir une autre solution!
Ajouter le convert_options code> dans les styles
code> eux-mêmes. Voici un exemple pour un modèle d'image de rails génériques contenant deux styles et des booléens correspondants pour activer ces styles.
# == Schema Information
#
# Table name: images
#
# id :integer not null, primary key
# image_file_name :string(255)
# image_content_type :string(255)
# image_file_size :integer
# hero_style :boolean
# thumb_style :boolean
# image_updated_at :datetime
# created_at :datetime not null
# updated_at :datetime not null
#
class Image < ActiveRecord::Base
# These are the postprocessing options.
# The boolean <stylename>_style? attributes controls which styles are created.
STYLES = {
hero: {geometry: "2500x800#", convert_options: "-quality 75 -strip", source_file_options: ""},
thumb: {geometry: "312x100#", convert_options: "-quality 75 -strip", source_file_options: ""}
}
has_attached_file :image,
styles:
lambda { |file|
r = {}
STYLES.keys.each do |stylename|
r[stylename] = STYLES[stylename] if file.instance.method("%s_style?" % stylename).call
end
return r
}
validates_attachment :image, :presence => true,
content_type: { content_type: ["image/jpeg", "image/png"] },
file_name: {matches: [/png\Z/, /jpe?g\Z/]}
end
Vous pouvez également spécifier convert_options code> dans styles:
Merci. Cela a pris beaucoup trop de temps pour constater que cela est possible. Nous transcodons également la vidéo et l'application de convert_options code> vers le principal
has_attached_file code> décède le transcodage vidéo. Cela fonctionne bien parce que nous pouvons appliquer le
convert_options code> seulement i> sur les styles d'image. BTW, voici les documents qui indiquent que cette option est présente sur le style code> objet code>: rubydoc.info/github/Thoughtbot/paperclip/...
J'ai trouvé quelques solutions, mais ils ont effectivement signalé exactement la même erreur que vous le voyez!
Où les trouvez-vous? Et comment est-ce une solution lors de la lancée d'une erreur? :)
lol je ne voulais pas dire "solution", je voulais dire un autre q où quelqu'un a trouvé une erreur similaire et tenté de résoudre!