2012-01-27 9 views
0

私のレール3.1のアプリケーションでは、私は自分のhtmlテーブル用の3つの異なるjavascriptファイルを持っています。たとえば、table1.js.coffee、table2、table3としましょう。このようCoffeeScriptとerb:変数ファイルが必要

// = require <%= 'table2' %> 
// or (more useful) 
// = require <%= Settings.js_table %> 

// = require table 

をそして、私のtable.js.coffee.erbで、私はそのような何かをしたい:私application.jsファイルで

は、私が持っていますextern設定ファイルからテーブルの動作を変更することができます。今のところ、それは機能していません。それが可能かどうか疑問に思っていましたか?

ありがとうございました!

+0

の可能な複製[rails asset pipelineでerb変数を使用する](http://stackoverflow.com/questions/8494181/using-erb-variable-in-rails-asset-pipeline) –

答えて

1

これは動作しません。

パイプラインのファイルは、その時点の内容(および解決されたerb)に基づいて、最初の要求時にコンパイルされます。

パイプラインファイルの中で何かを参照すると、それが別の場所で変更されても更新されません。コメントに応答して

編集:

申し訳ありませんが、私は明確にされている必要があります。これの一般的な場合は動作しません。

requireと一緒に使用する場合、requireステートメントはSprockets固有の指令です。これは、erbハンドラが取得する前にSprocketsによって処理されます。

ディレクティブには1つの引数、つまり文字列が必要です。この場合、requireディレクティブに3つの引数を渡しています:開始時のerbタグ、引用符付きの文字列、終了時のerbタグです。

なぜ3対1の引数エラーが発生するのですか?

実行時にファイルを動的にインクルードするための最良の方法は、ビューレイヤーからのものです。

+0

私はそれを認識しています。しかし '= require <%= 'table2'%>'さえ動作しません。私はこのエラーをキャッチします: 'ArgumentError:引数の数が間違っています(3に対して1)' –

+0

これははっきりしています!ありがとうございました! –

関連する問題