最近、Rails 3.2.14 アプリで CoffeeScript を使い始めました。現在、すべての JavaScript コードは、マニフェスト ファイルとしても機能する application.js にまとめられています。私たちの計画は、コントローラー固有のコードにそれらを抽出して、将来の保守を容易にすることでした。私たちのapplication_helper.rb
ファイルには、このヘルパーがあります
def css_tag_id
"#{controller.controller_name}-#{controller.action_name}"
end
これは、ページ固有の CSS と JavaScript に使用されます。したがって、私の最初のステップは、PostsController に関連するコードを取得し、それを新しいファイルに入れることposts.js.coffee
でした。PostsController によってレンダリングされたビューでのみコードが実行されるように、 onposts.js.coffee
を使用してチェックですべてのコードをラップします。これはすべて 1 つの大きな application.js ファイルにコンパイルされますが、これで問題ありません。これはすべて完璧に機能します。id
body
ただし、ページの 1 つでフォームを送信した AJAX は、レンダリングする PostsController のアクションにヒットしますselect_customer.js.erb
。このテンプレートでは、現在 で定義されているメソッドを呼び出しますが、posts.js.coffee
何らかの理由で機能しなくなりました。
関連するすべてのファイルの小さな例を次に示します。
posts.js.コーヒー:
jQuery ->
if $('#posts-new').length > 0
keywordsAccordion()
keywordsAccordion = ->
$('.accordion').accordion
'active': 0,
'collapsible': true
select_customer.js.erb
keywordsAccordion();
CoffeeScriptposts.js.coffee
はすべて名前空間か何かになるようにコンパイルしていますか? そして、他のjsテンプレートとは異なる方法で定義されたメソッドを呼び出す必要がありますか?
これはひどく混乱するかもしれませんが、誰かが私を助けてくれることにとても感謝しています.