2
Iインスタンスを更新した後に更新する必要があるファイルが、それはこのようになります 属性があります。更新バージョンが適用されていない
controller.rb
def update
if UpdateNewspaperDesign.new(newspaper_design, newspaper_design_params).call
#render response
end
end
と
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
レイアウトにCSSを含めます
= stylesheet_link_tag newspaper.design.css_url, media: 'all'
コンソールに表示されているとおり、css urlは更新されていますが、レイアウトに挿入されたURLは更新されません。
それを固定する方法である:、newspaper_design:インスタンスの属性はRubyでプライベートなのでプライベートでparams'はアンチパターン奇妙である場合ではありません。 – max
また、あなたがやろうとしていることはかなり不明です。ユーザーがサイトCSSを更新できるようにする場合、Railsのアセットパイプラインは、リクエスト時ではなく実際にはアセットをコンパイルすることを意識する必要がありますスロー。したがって、ユーザーが 'application.css'やアセットヘルパーにリンクされているファイルを変更できるようにするには、再コンパイルをトリガする必要があります。あなたが適切なバージョン管理を緩めているので、それは非常に良いアイデアではありません。私を信じて、私はエディタがコピーした大規模なサイトを維持しています... – max
@maxのユーザーは、例えばCSSのファイルを手動で再コンパイルするよりもデザイン属性を更新しています。それ。 このCSSはレイアウトファイルに含まれています – skrypalyk