찾을 수있는 많은 잠재적 인 솔루션을 시도했으며 지금까지 아무 것도 작동하지 않았습니다. .js 파일의 코드가 실행되고 있지 않거나 클라이언트 브라우저의 아무 곳에 나 나타나지 않습니다. 머리 부분이컨트롤러 고유의 javascript 파일을 Rails (5+)에로드 할 수 없습니다.
application.html.erb 하중 :
<%= csrf_meta_tags %>
<%= stylesheet_link_tag "application", params[:controller], media: "all" %>
<%= javascript_include_tag "application", params[:controller] %>
설정/초기화/assets.rb
%w( articles password_resets sessions static_pages users).each do |controller|
Rails.application.config.assets.precompile += ["#{controller}.js.coffee", "#{controller}.css"]
end
는 [컨트롤러 이름은 여기]
$(document).ready(function() {
alert('My controller');
});
된 .js
브라우저에서 위의 모든 내용이 그대로 유지되면 '[컨트롤러 이름] .self.longstringhere.j라는 애셋이 있습니다. s? body = 1 '입니다. 이 코드는 다음과 같습니다.
(function() {
}).call(this);
... 내 프로젝트에는 아무 것도 없습니다. 해당 컨트롤러에서 페이지를로드하려고 할 때 assets.rb에서 컨트롤러를 제거하면 [예상대로] 오류가 발생합니다. 응용 프로그램 레이아웃에서 항목을 제거하면 브라우저의 자산 [ 'controller] .self.js'파일이 [예상대로] 누락되었습니다. 그러나 컨트롤러의 js 파일이 누락되어 있는지 여부에 관계없이 오류가 발생하지 않으며 브라우저의 애셋에 '[컨트롤러] .self.js'가 포함되지 않습니다. 그것은 app/assets/javascripts에있는 파일이 완전히 무시되고 "스텁 아웃"된 것과 같습니다.
참고 : 나는 특별히 '// = require_tree'가 없습니다. 및 '* = require_tree.' application.js/.css 파일에서 특별히 지침 here을 따르고 있습니다. 이는 의도적 인 것입니다.
터보 링크의 모든 참고 자료 (예 : 보석, 자산 등)를 삭제 했으므로이 문제와 관련된 사악한 일이 발생할 수 있습니다.
나는 또한 서버를 다시 시작하고 자산을 미리 컴파일했으며이 작업과 몇 가지 다른 의식적인 작업을 여러 번 수행했습니다.
기록을 위해 assets.rb의 "# {controller} .js.coffee"도 '.js'로 변경하여 사용하지 않았습니다. 그러나 나는 이것이 어쨌든 필요하지 않다는 것을 읽었다.
이 문제는 모든 컨트롤러에서 발생합니다.
도움 주셔서 감사합니다.
I 새로운 레일 비계를 이용하여 동일한 절차를 따랐다 (그러나 컴파일 저작물 (posts.js)가 구체적 assets.rb의 이름으로 발생한 것을 보장하는)와 같은 문제가 돌출 만든 [EDIT] 브라우저의 posts.blahblah.js 파일에있는 동일한 자바 스크립트 "스텁"코드를 포함하여 위에서 설명한대로.
컨트롤러 이름과 js/css 파일 이름이 같아야합니다. 컨트롤러 이름이'rooms_controller.rb' 인 경우 js는'rooms.coffee 또는 room.js 등 ... '이어야합니다. – ashvin
좋은 측정을 위해 컨트롤러의 자산 이름을 직접 하드 코딩 해 보았습니다. (항상 서비스 재시작 등을 기억하십시오.) – vicmorrowshead