2014-12-21 3 views
0

사전 처리 .erb.js에서이 파일을하지 접두사 I은 다음 파일 : products.js.erb가 .html 중에서 포함되어루비 내가 레일 4를 사용하고

// apps/assets/javascripts/products.js.erb 

var getColoursAndMaterialsData = function(onSuccess) 
{ 
    var fd = formdata(); 

    $.post('<%= data_products_path(:format => :json) %>', fd) 
    .done(function(data) 
    { 
     onSuccess(data); 
    }); 
}; 

undefined method `data_products_path' 

을 사전 처리 명확 경로 접두사 'data_products_path'가되지 않는 : .erb 파일 나는 오류가 발생합니다. .erb 확장을 products.js에 지정하면 전처리 기가 동축 케이블을 사용하게되었습니다.

정확히 동일한 코드는 .html.erb 파일의 <script type="text/javascript"></script> 태그 사이에서 작동합니다. 내 routes.rb의 관련 부분은 다음과 같습니다.

resources :products do 
    collection do  
     post 'data' 
    end 
end 

내가 할 일이 또 있습니까?

+0

에 응답합니다. config/routes.rb 파일을 보여줄 수 있습니까? –

+0

을 직접 입력 할 때 똑같은 코드가 작동한다고 언급 했어야합니다. 이 질문을 업데이트하고 routes.rb의 관련 부분을 추가합니다. –

답변

1

.erb 확장자를 추가하면 작동하지 않을 것이라고 생각합니다. 왜 간단한 jQuery 아약스 게시물 요청을하지 않습니까?

을 사용하면 json 응답을 받고 URL 도우미를 사용하는 대신 url 만 지정하면됩니다.

http://api.jquery.com/jquery.post/

링크는 아래의 오류 메시지가 템플릿이 처리되는하지만 레일은 data_products_path 방법을 알고하지 않음을 나타냅니다 질문

Using a Rails helper method within a javascript asset

+0

감사! 게시 한 링크마다 '<% environment.context_class.instance_eval {Rails.application.routes.url_helpers} %>'를 .js.erb 파일 맨 위에 추가하면 문제가 해결되었습니다. –

+0

행운을 빌어 요 ... 환호! –

관련 문제