2012-03-24 18 views
1

Ich habe eine HTML/CSS-Datei mit einer Reihe von Bereichen, die hinzugefügt werden müssen. Ich habe eine Ruby on Rails-Anwendung, die eine Reihe von Formularelementen hätte, die dann zu dieser HTML/CSS-Datei hinzugefügt werden müssten (sie muss nicht angezeigt werden oder irgendetwas, nur bearbeitet und dann gespeichert). Ich verstehe nicht wirklich, wie ich das machen kann. Ich habe mir die Dateiklasse angesehen, bin aber sehr schnell verloren gegangen.Ruby on Rails Dateivorlage bearbeiten?

Jeder einfache Weg, dies zu tun?

+0

So Ihre Frage ist im Grunde, wie man Zeichenketten zu bestimmten Positionen in einer Datei schreibt? –

+0

Um ich möchte ein Vorlagensystem wie HAML oder ERB verwenden. Aber ja/nein (mehr wie eine bestimmte Zeichenfolge in einer Datei durch eine Zeichenfolge ersetzen). – Steven

+0

Nun, was spricht dann gegen die Verwendung von ERB? Scheint perfekt dafür. –

Antwort

1

in einer Datei in Ruby zu schreiben ist sehr einfach:

File.open(filename, 'w') do |f| 
    f.write(content) 
end 

Ein Beispiel in Rails versuchen Sie die folgenden Schritte. Erzeugen Sie eine neue Rails-Anwendung und ein Dummy-Gerüst durch Ausführen von:

rails new erbfun 
cd erbfun 
rails g scaffold Stylesheet custom_css:text 
rake db:migrate 
mkdir -p public/system/stylesheets 

Dann wie dies in Ihrem Modell etwas tun:

class Stylesheet < ActiveRecord::Base 
    require 'erb' 

    FOLDER = File.join(Rails.public_path,'system/stylesheets') 
    TEMPLATE = <<-CSS 
    body { 
     font-family: Helvetica; 
    } 
    <%= custom_css %> 
    /* some css comment here ... */ 
    CSS 

    def save_to_file 
    template = ERB.new(TEMPLATE) 
    document = template.result(binding) 
    filename = File.join(FOLDER,"stylesheet-#{Time.now.to_i}.css") 
    File.open(filename, 'w') do |f| 
     f.write(document) 
    end 
    end 
end 

und dann probieren Sie es aus:

$ rails c 
Loading development environment (Rails 3.2.2) 
1.9.3p125 :001 > s = Stylesheet.new custom_css: 'foobar' 
=> #<Stylesheet id: nil, custom_css: "foobar", created_at: nil, updated_at: nil> 
1.9.3p125 :002 > s.save! 
... 
=> true 
1.9.3p125 :003 > s.save_to_file 
=> 94 
1.9.3p125 :004 > exit 

$ cat public/system/stylesheets/stylesheet-1332633386.css 
    body { 
     font-family: Helvetica; 
    } 
    foobar 
    /* some css comment here ... */