2017-12-27 31 views
0

각 페이지에 몇 가지 javascript 파일이 포함 된 html 페이지가 있습니다. 이 파일들을 어디에 두어야합니까? 업데이트레일에는 js가 html 공용 파일에 포함되어 있습니다.

folder/ 
    page1/ 
    index.html 
    script1.js 
    page2/ 
    index.html 
    script2.js 

은 내가 더 잘 설명한다. 나는 HTML 페이지와 일부 자바 스크립트 파일로 구성된 작은 프로젝트를 가지고 있는데, 캔버스를 사용한다. 각 페이지마다 다른 스크립트가 있습니다.

/sketches 
    /project1 
    index.html 
    script1.js 
    sketch.js 
    /project2 
    index.html 
    sketch.js 

'sketch'라는 파일은 서로 다릅니다. 나는 하나의 컨트롤러를 매개 변수 id로 만들고 이것을 기반으로 다른 프로젝트를로드해야한다. 나는 HTML 페이지를 공용 폴더에 넣었지만 제대로 작동했지만 자바 스크립트에 문제가있어 거부되었다.

내게 어떤 말을하는지, 나는 모든 자바 스크립트를 별도의 폴더에 넣어야한다 ... 나는 그 구조를 유지하고 싶다. 모든 프로젝트가 정적으로 포함되어있는 폴더를 제공하는 방법이 레일에 없습니까?

+0

도움이 될만한 답을 수락하십시오. – Vishal

답변

4

모든 js 파일을 app/assets/javascripts 폴더 아래에 두어야합니다.

업데이트 대답

로드 application.js의 주요 자바 스크립트 때마다. 이제 다양한 요구에 맞는 파일을 만듭니다. form.js 파일, myfancypart.js 파일 등을 작성하십시오. application.html.erb 레이아웃에로드하지 마십시오. 당신이 그들을 필요로 할 때 동적으로로드 :

application.html.erb :

<% content_for :javascript_includes do %> 
    <%= javascript_include_tag "users_new.js" %> 
<% end %> 

모든 : 당신의 view.html.erb 또는 사용자/new.html.erb의

<%= javascript_include_tag "application" %> 
<%= yield :javascript_includes %> 

최고 content_for 블록에서 yield : javascript_includes로로드됩니다.

출처 : stackoverflow

+0

문제는 자바 스크립트 파일을 배포해야한다는 것입니다. 가능한가? 많은 페이지와 많은 자바 스크립트가 포함되어 있으며 각 페이지마다 다릅니다. 나를 위해 모든 엉망 자바 스크립트를 배치하고 페이지에 그들을 포함 엉망이 javascripts 파일을 일부 이름이 같음 –

+0

@ GiuseppeMagazzù 레일 컨트롤러를 생성하면 자동으로 js 및 CSS 파일을 생성하므로 수 있습니다. 해당 컨트롤러보기에 해당 js 코드에 관련 js 코드를 추가하십시오. – Vishal

+0

@ GiuseppeMagazzù 업데이트 된 답변을 확인하십시오. – Vishal

0

당신은 다음과 같이 따라야합니다

folder/ 
    pages/ 
    index.html 
    aboutus.html 
    assets/ 
    js/ 
     some_js.js 
     anoter_js.js 
    css/ 
     homepage.css 
     about.css 
1

가장 좋은 방법은 app/assets 폴더에 vendor/assets 폴더와 앱이 특정 자산에 모든 타사 자산을 배치하는 것입니다. 그리고 특정 매니페스트 파일의 자산은 require이어야합니다. 당신의 vendor/assets/javascripts 폴더이 같은 일부 JS 파일이있는 경우

`/vendor/ 
    /assets/ 
      /javascripts/` 
       script1.js 
       script2.js 

그런 다음에 app/assets/javascripts/application.js 당신이해야 있도록 assets 디렉토리, 공급 업체에서 제거, 레일 버전 5.1에서

//= require script1 
    //= require script2 

를 추가 자신의 디렉토리를 만들고 config/initializers/assets.rb에 추가하여 사전 처리하거나 공급 업체 디렉토리와 관련하여 파일에 대한 상대 경로를 사용하십시오.

0
/sketches 
    sketch.js 
    /project1 
    index.html <-- include relative path for sketch.js 
    script1.js 
    /project2 
    index.html <-- include relative path for sketch.js 

저는 부모 폴더의 상대 경로 js 파일을 포함시킬 수 있으므로 모든 하위 폴더에 넣을 필요가 없습니다.