2012-03-04 3 views
1

私はshowアクションを持っていて、ロードが完了したら関数を呼びたいと思っています。この関数は、jQueryがロードされていることと、残りのapplication.jsに依存しています。Rails 3.2:showアクションでCoffeeScriptを実行する

私はそれでこので、show.js.coffeeを作成してみました:

SomeClass.doSomething '<%= @thing.description %>' 

...しかしshow.js.coffeeはロードされませんので、実行されることはありません。これはどうすればいいですか?

+0

show.js.coffeeファイルはどこですか?あなたのアプリ/ビューまたはアプリ/アセットでは? application.jsに追加しようとしましたか? – John

+0

私はそれがapp/views/thing/show.js.coffeeにあることを望みます。私はそれが正しいかどうかはわかりませんが、それはビューのための他のcoffeescriptがどこに行くのかです。だから、それもそこにあるはずです。 –

+0

明確にするために、@John(私が間違っていると私を修正してください)、これはRailsのJSレンダリングをアクションに組み込んだビューテンプレートです。 'app/assets'以外の' .coffee'ファイルが自動的にERBになるかどうかはわかりません。ファイル拡張子に '.erb'を追加しようとしましたか? JavaScriptのエラーはありますか?あなたが '<%Rails.logger.info 'のテスト'%> 'またはそれに類するものを使用しているならば、どんなコンソール出力ですか? –

答えて

0

多分私は何かが不足しているかもしれませんが、1)実行をトリガーするいくつかのDOMイベントが必要であり、2)ERBとコントローラーコンテキスト(<%= @thing.something %>)が存在し、ビュー。この場合、document.readyがイベントのように聞こえます。だから、あなたはそれがすでにロードされているどこかのCoffeeScriptで定義されてSomeClassを持っていると仮定すると、(ジャバスクリプト/ DOMのコンテキストで実行されている)あなたのshow.js.coffeeファイルが

$ -> 
    SomeClass.doSomething $("#thing_something").val() 

それはあなたがERBの一部を取得する可能性がありますのようなものかもしれませんそのことについて

<script type="text/coffeescript"> 
    $ -> 
    SomeClass.doSomething '<%= @thing.description %>' 
</script> 

わからないあなたshow.html.erbビューでこのような何かを追加することで...

5

バージョンcoffee-rails宝石の3.2は、JavaScriptの要求のためのサポートを追加しますapp/viewsディレクトリに:

また(.js.coffeeビューを使用)JavaScriptの要求に応答するのCoffeeScriptを使用するためのサポートを追加します。

注:group :assetsのうち、gem coffee-railsを移動します。

通常(remote: true)のようにthings#showアクションを呼び出し、app/views/things/show.js.coffeeという名前のファイルがあることを確認してください。

+0

私はレール3.2.12を使用しており、宝石のコーヒーレールを資産グループの外に移動する必要はありませんでした。 – Artur79

+0

js/coffeeスクリプトをviewsフォルダの下に置くのは奇妙です。 –

関連する問題