2016-08-21 9 views
0

私はjs.erbファイルを使用するためにすべてを試しました。なぜなら私のjsと一緒にルビーを使う必要があるからです。js.erbをレールアプリで使用する方法

私はapplication.jsで同じことをしているので、それはコードではないことを知っており、うまくいきます。

モデル:トピック

私は部分的_index.js.erbを試みたが、それをレンダリングしましたビュー/トピック/ にtopics.js.erbを追加しようとした - 私はそれがロード見たが、それ実行されていません。両方のファイルで

、私が持っている:

$(document).ready(function() { 
    console.log('something'); 
}) 

は、私がここに欠けている明白なものはありますか? ありがとう!

+0

はあなたをチェックしますトピックのコントローラのアクションを確認し、デフォルトで応答がhtmlであることを確認してください。ここで私たちは行く:http://guides.rubyonrails.org/working_with_javascript_in_rails.html!あなたの応答は次のようなものでなければなりません:respond_with do | format | format.js format.html end。また、あなたのコンソール(実行中のサーバがあるレール)をチェックして、トピック#indexをjs形式で表示するようなものを見てください。 – Evgeny

答えて

1

私はあなたの質問を今理解していると思います。コントローラー内にいくつかのインデックスアクションがあり、index.html.erbビューとindex.js.erbがあり、index.html.erbのレンダリング後にindex.js.erbからjavascriptを実行したいとします。それは動作しません、js.erbビューは何かのために使用されます。インデックスアクションがレンダリングされるときにのみjavascriptコードを実行するには、このjavascriptコードをindex.html.erbビュー内に配置することができます。または、このコードをapplication.jsファイルに入れて条件を追加することができます。このため、索引アクションに対してのみ実行されます。

あり、このへのレールウェイソリューションはありませんが、あなたはこのような何か試すことができます。

index.html.erb:

# ... your code here 

<script type="text/javascript"> 
    window.railsView = "controller_name#index"; 
</script> 

application.js:

$(document).ready(function() { 
    if (window.railsView == "controller_name#index") { 
    console.log("something"); 
    } 
}); 
+0

トピックビューにindex.js.erbというファイルが保存されています。ページをレンダリングする際にコンソールログに何かを記録させるには、ほかに何が必要ですか?まだ接続していません – gwalshington

+0

@gwalshington今、私はあなたが意味するものを得ます。私は私の答えを変えた。 –

+0

js.erbファイルとは何ですか?私の最終目標は、jsとルビの両方を同じファイルに入れることです。たとえば、current_userを定義し、トピックを既にお気に入りにしているかどうかを知り、インデックスページで非同期で非お気に入り/好きなものを知りたいとします。これはすでにルビーを介して行われていますが、ページは各アクションでリロードされます。これはjs.erbの使用ではないでしょうか? – gwalshington

関連する問題