2
angewendet Ich habe Datei, die nach dem Update Instanz aktualisiert werden soll Attribute Es sieht wie folgt aus:Aktualisierte Version von Datei nicht
controller.rb
def update
if UpdateNewspaperDesign.new(newspaper_design, newspaper_design_params).call
#render response
end
end
und
class UpdateNewspaperDesign
def initialize(newspaper_design, params)
@newspaper_design = newspaper_design
@params = params
end
def call
newspaper_design.assign_attributes(params)
File.open(File.join(Rails.root, 'tmp', "newspaper-design-#{Time.now.to_i}.css"), 'w') do |file|
file.write(css(newspaper_design))
newspaper_design.css = file
end
newspaper_design.save
end
private
attr_reader :newspaper_design, :params
def css(newspaper_design)
NewspaperDesignCssCompiler.new(newspaper_design).call
end
end
Und dann schließe ich CSS im Layout
= stylesheet_link_tag newspaper.design.css_url, media: 'all'
Wie ich in der Konsole sehe: css URL ist aktualisiert, aber die URL, die im Layout eingefügt wird - ist kein Update.
Deklarieren 'attr_reader: newspaper_design,: params' in privaten seltsam ist, wenn nicht ein Anti-Muster seit Instanz Attribute in Ruby sind privat. – max
Es ist auch ziemlich unklar, was Sie zu tun versuchen - wenn Sie versuchen, den Benutzer CSS-Sites aktualisieren zu lassen, sollten Sie beachten, dass die Rails-Asset-Pipeline Assets zur Bereitstellungszeit kompilieren soll - nicht pro Anfrage, wie dies wirklich wäre langsam. Wenn Sie möchten, dass der Benutzer die 'application.css' oder eine der Dateien, die mit den Asset-Helfern verknüpft sind, ändern kann, müssten Sie eine Neukompilierung auslösen. Es ist jedoch keine sehr gute Idee, da Sie die richtige Versionskontrolle verlieren. Vertrauen Sie mir, ich habe große Websites, wo die Editoren kopieren alle Arten von Mist-CSS aus dem Interweb ... – max
@max Benutzer aktualisiert Design-Attribute zum Beispiel - Farbe, als ich css manuell kompilieren, fügen Sie diese CSS zu Datei und laden es. Dann ist diese CSS in der Layoutdatei enthalten – skrypalyk