2012-03-24 12 views
1

私は追加が必要な領域の束とレイアウトされたHTML/CSSファイルを持っています。私は、このHTML/CSSファイルに追加する必要のあるフォーム要素の束を持っているレールアプリケーション上にルビーを持っています(それは表示するか何かを編集して保存する必要はありません)。私はこれをどうやってできるのか本当に分かりません。私はファイルクラスを見ていましたが、非常に迅速に失われました。Ruby on Railsファイルテンプレートを編集しますか?

これを行う簡単な方法はありますか? Rubyでファイルへの書き込み

+0

:その後、

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 

とそれを試してみると基本的にファイル内の特定の位置に文字列を書き込む方法はありますか? –

+0

私はHAMLやERBのようなテンプレートシステムを使いたいと思っています。しかし、yes/no(ファイル内の特定の文字列を文字列に置き換える方がよく似ています)。 – Steven

+0

それでは、ERBの使用に反対するものは何ですか?これには完璧に見えます。 –

答えて

1

は非常に簡単です:

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

Railsの中に、例えば、以下の手順を試してください。実行して、新しいRailsのアプリとダミー足場を生成します。

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

次に、あなたのモデルでは、このような何か:だからあなたの質問

$ 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 ... */