2016-03-21 12 views
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は更新されません。

+0

それを固定する方法である:、newspaper_design:インスタンスの属性はRubyでプライベートなのでプライベートでparams'はアンチパターン奇妙である場合ではありません。 – max

+0

また、あなたがやろうとしていることはかなり不明です。ユーザーがサイトCSSを更新できるようにする場合、Railsのアセットパイプラインは、リクエスト時ではなく実際にはアセットをコンパイルすることを意識する必要がありますスロー。したがって、ユーザーが 'application.css'やアセットヘルパーにリンクされているファイルを変更できるようにするには、再コンパイルをトリガする必要があります。あなたが適切なバージョン管理を緩めているので、それは非常に良いアイデアではありません。私を信じて、私はエディタがコピーした大規模なサイトを維持しています... – max

+0

@maxのユーザーは、例えばCSSのファイルを手動で再コンパイルするよりもデザイン属性を更新しています。それ。 このCSSはレイアウトファイルに含まれています – skrypalyk

答えて

0

ファイルを交換して一時ファイル - これは私が `attr_reader宣言

関連する問題