Railsヘルパーメソッド、より具体的には、javascriptアセットファイル内のパスヘルパーメソッドを使用する方法はありますか. このファイルfoo.js.coffee.erb
$('#bar').val("<%= create_post_path %>")
エルビスから貰えたら嬉しいです
$('#bar').val("path/to/create")
Railsヘルパーメソッド、より具体的には、javascriptアセットファイル内のパスヘルパーメソッドを使用する方法はありますか. このファイルfoo.js.coffee.erb
$('#bar').val("<%= create_post_path %>")
エルビスから貰えたら嬉しいです
$('#bar').val("path/to/create")
以下を使用して、任意のヘルパー/モジュール/クラスを erb テンプレートに含めることができます。
<% environment.context_class.instance_eval { include MyHelper } %>
参照: https://github.com/rails/sprockets/blob/master/lib/sprockets/environment.rbおよびhttps://github.com/rails/sprockets/blob/master/lib/sprockets/context.rb
URL ヘルパーを使用するには、特定のアプリケーションのヘルパーを含める必要があります。
それらは次の場所で入手できますRails.application.routes.url_helpers
。
<% environment.context_class.instance_eval { include Rails.application.routes.url_helpers } %>
編集: 移動されたスプロケット リポジトリへのリンクを修正しましたが、これが何年も経っても意味があるかどうかはわかりません。
これは、初期化子でもトリックを行います。
Sprockets::Context.send :include, MyHelper
開発モードでは、ヘルパーはリクエストごとに再ロードされません。
UrlHelpers を使用したアプローチは、見つける必要があるまで機能しますpost_path(...um...we don't know what post id we'll need at compile time...)
。すべての Rails UrlHelpers を JavaScript で再実装する ruby gem があります: https://github.com/railsware/js-routes
なぜこれをやりたいのかよくわかりません。
動的な値が含まれているため、javascript ファイルがキャッシュされないようにします。
javascript/coffeescript と rails の間の結合が得られます
可能であれば、ビューにターゲット パスを指定して問題を抽象化し、特定のイベントが発生したときに DOM 要素から値を取得することをお勧めします。Rails の「目立たないスクリプト アダプター」のように。例: https://github.com/rails/jquery-ujs/blob/master/src/rails.js#L157-173
実際、これが役立つかどうかはわかりませんが、使用するために独自のヘルパーを定義する方法がありますrake precompile
新しいイニシャライザを作成し、これを入れます。
module Sprockets
module Helpers
module RailsHelper
def my_helper_method
...
end
end
end
end
そして、次のことができます。
<%= my_helper_method %>
あなたの.erb
資産に