coffeescriptテンプレート内からRubyインスタンス変数にアクセスするにはどうすればよいですか?coffeescriptテンプレート内のsinatraクラス変数へのアクセス方法
sinatraのドキュメントでは、テンプレートはそのテンプレートを呼び出すroutと同じスコープ内で評価されると言われています。
だから、私はシナトラアプリを次ています
server.rb:
require "sinatra"
require "coffee-script"
get '/app.js' do
@str = "Hello"
coffee :app
end
とビュー/ app.coffeファイル内を私は@str
変数を使用したいと思います。出来ますか?もしそうなら、どうすれば@str
の変数にアクセスできますか?
お返事ありがとうございます。たぶん、私はあなたがCoffeeScriptに地元の人々をどのように渡すことができるか知っていますドキュメンテーションはそれについて何も言わない。最初はsinatraがhamlテンプレートに似たコーヒーテンプレートを扱うが、htmlと同じjsを作成することは可能であるが、 –
私の答えを見てください。あなたは地元を渡すことはできませんが、あなたはそれをコンパイルする前にテンプレートエンジンでコーヒースクリプトのソースコードを前処理することができます – iafonov
iafonovとbradgonesurfing、大きな感謝!私は、 "<%= @str %>"のように、 "coffee(erb:app)"のような処理を行い、ルーブルコードをコーヒースクリプトに埋め込むことが可能であることを発見しました。ちょうどあなたがiafonovを言ったように。唯一の欠点は、 "views"フォルダ内のファイルを "app.erb"と呼ぶ必要があることです。IMHOはファイルの真の性質を隠しています。そのため私はローカルのsinatra gemをハッキングし、新しいオプション ":preprocess"を追加しました。 "coffee:app、:preprocess =>:erb"のようなもので、テンプレートファイルを "views/app.coffee.erb"として保存します。 bradgonesurfingのように動作します。はるかに良く清潔です。 –