2017-12-27 11 views
0

各ページにjavascriptsファイルがいくつか含まれているhtmlページがあります。このファイルをどこに置く必要がありますか?Railsにはhtmlパブリックファイルにjsが含まれています

を更新しました

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

私はより良い説明。私はいくつかの小さなプロジェクトをhtmlページといくつかのjavascriptsファイルで構成しています。私はキャンバスを使っています。私は各ページごとに異なるスクリプトを用意しています。

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

「スケッチ」という名前のファイルは、それらの間で異なります。 私はパラメータidを持つコントローラを1つ作り、これを基にして別のプロジェクトをロードします。私はそれをパブリックフォルダの中にhtmlページを置いて、それは働いたが、私はJavaScriptが拒否されている問題があります。

私に言っていることは、すべてのjavascriptを別のフォルダに置く必要があります...私はその構造を保ちたいと思います。すべてのプロジェクトを含むフォルダを静的なものとして扱うための方法はありませんか?

+0

お手数ですがお答えください。 – Vishal

答えて

4

すべてのjsファイルをapp/assets/javascriptsフォルダに配置する必要があります。

更新回答

ロードapplication.jsでメインのJavaScriptたびに。さまざまなニーズに合わせてファイルを作成します。 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 ORユーザー/ new.html.erbの

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

トップcontent_forブロック内の値はyield:javascript_includesでロードされます。

出典:stackoverflow

+0

問題は、私はjavascriptsファイルを配布する必要があるということです。出来ますか? 私はたくさんのページとたくさんのjavascriptを持っていますが、それぞれのページでは異なっています。 すべてのjavascriptを分けてページに含めることは難しいですか?この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ファイルを含めることができるので、すべてのサブフォルダに配置する必要はありません。

関連する問題