복붙노트

[RUBY-ON-RAILS] 자바 스크립트 자산 내에서 레일 도우미 방법을 사용하여

RUBY-ON-RAILS

자바 스크립트 자산 내에서 레일 도우미 방법을 사용하여

레일 도우미 방법을 사용하려면 어떤 방법이 있나요, 더 구체적으로, 자바 스크립트 자산 파일 내의 경로 도우미 방법. 이 파일 foo.js.coffee.erb

$('#bar').val("<%= create_post_path %>")

내가 erubis에서 얻을 수 있다면 나는 그것을 사랑

$('#bar').val("path/to/create")

해결법

  1. ==============================

    1.당신은 ERB 템플릿에있는 도우미 / 모듈 / 클래스를 포함 할 수 있습니다 :

    당신은 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 } %>
    

    편집 : 이동 톱니에 대한 고정 링크 REPO하지만 정말 확실이 여전히 많은 년 후에 의미가 있습니다.

  2. ==============================

    2.이것은 또한 초기화에 트릭을 할 것입니다 :

    이것은 또한 초기화에 트릭을 할 것입니다 :

    Sprockets::Context.send :include, MyHelper
    

    개발 모드에서 도우미는 모든 요청에 ​​다시로드되지 않습니다.

    당신이 (... 음 ... 우리는 우리가 ... 컴파일시에해야합니다 후 어떤 ID를 모르는) post_path을 찾아야 할 때까지 UrlHelpers와 귀하의 접근 방식은 작동합니다. 자바 스크립트에서 레일 UrlHelpers을 모두 재 구현 된 루비 보석이 있습니다 : https://github.com/railsware/js-routes

  3. ==============================

    3.당신이하고 싶은 이유는, 아주 확실하지 않다.

    당신이하고 싶은 이유는, 아주 확실하지 않다.

    내가보기에 당신의 대상 경로를 제공하여 멀리 추상적에 문제가 당신을 조언하고 특정 이벤트가 발생할 때 DOM 요소에서 값을 검색 할 수있는 경우. 그냥 레일을위한 '겸손한 스크립팅 어댑터'좋아해요. 예컨대 : https://github.com/rails/jquery-ujs/blob/master/src/rails.js#L157-173

  4. ==============================

    4.사실 나는 @eirc의 대답 (계정 톱니 문서에 복용)을 동의합니다. 그러나 나는 것 레일 부팅시 도우미 모듈을 포함하여 고려하십시오. 따라

    사실 나는 @eirc의 대답 (계정 톱니 문서에 복용)을 동의합니다. 그러나 나는 것 레일 부팅시 도우미 모듈을 포함하여 고려하십시오. 따라

    # config/initializers/sprockets.rb
    Rails.application.assets.context_class.instance_eval do
      include ActionView::Helpers
      include Rails.application.routes.url_helpers
      include MyModule
    end
    

    이 때문에의는 다음과 같습니다 https://github.com/rails/sprockets-rails/blob/master/lib/sprockets/railtie.rb#L23

  5. ==============================

    5.사실,이 도움이되지만 레이크 프리 D 파일 중에 사용하기 위해 자신의 헬퍼를 정의하는 방법이 확실하지 경우

    사실,이 도움이되지만 레이크 프리 D 파일 중에 사용하기 위해 자신의 헬퍼를 정의하는 방법이 확실하지 경우

    새로운 초기화를 만들고이를 넣어 :

    module Sprockets
      module Helpers
        module RailsHelper
    
          def my_helper_method
           ...
          end
    
        end
      end
    end
    

    그리고 당신은 할 수 있습니다 :

    <%= my_helper_method %>
    

    당신의 .erb 자산

  6. from https://stackoverflow.com/questions/7451517/using-a-rails-helper-method-within-a-javascript-asset by cc-by-sa and MIT license