4

エラーは次のとおりです。

Processing by LandingPageController#index as HTML
  Rendered landing_page/index.html.erb within layouts/application (2.1ms)
Completed 500 Internal Server Error in 49ms

ActionView::Template::Error (landing_page.css isn't precompiled):
    12:     <![endif]-->
    13: 
    14:         <%= stylesheet_link_tag "application", :media => "all" %>
    15:         <%= stylesheet_link_tag params[:controller] %>
    16: 
    17:   </head>
    18:   <body>
  app/views/layouts/application.html.erb:15:in `_app_views_layouts_application_html_erb__3002306950342527375_29178380'

15行目でlanding_page.cssファイルを探していることがわかります。私が理解していないのは、このアセットを本番用にプリコンパイルするための最良の方法は何かということです。/config/application.rbを変更してみました:

config.assets.precompile += ['landing_page.css']

これは私には正しくないようです。煩わしいスタイルシートごとにこれを行う必要があります。

application.cssマニフェストにコードを追加しました。

*= require landing_page

これはうまくいかないようです。これを実行し、アプリケーション構成ファイルを変更しないと、最初のエラーが発生します。

私はあなたがどのように行を含めることができるかについて困惑しています

<%= stylesheet_link_tag params[:controller] %>

レイアウトで、実行時にアセットを本番用にプリコンパイルします

bundle exec rake assets:precompile

rakeタスクを実行するときに、自動生成されたスタイルシートとjavascriptファイルをプリコンパイルされるファイルのリストに自動的に追加する簡単なトリックが欠けているように感じます。

4

3 に答える 3

3

/config/environments/production.rbに次を追加します。

config.assets.precompile += %w( landing_page.css)
于 2012-07-03T06:05:58.193 に答える
3

application.cssに追加require landing_pageしても、landing_pageはプリコンパイルされません。これは、application.cssがプリコンパイルされると、landing_page.cssの内容が出力に含まれることを意味します。

それらを個別にロードする場合、つまり

    <%= stylesheet_link_tag params [:controller]%>

次に、それらすべてをプリコンパイルするもののリストに追加する必要があります。そのリストでワイルドカードを使用できるため、これらのコントローラー固有のスタイルシートがすべてスタイルシート/コントローラーに含まれている場合は、次のことができます。

    config.assets.precompile + = ["controllers/*。css"]

通常、人々はこれをしない傾向がありますが。開発を容易にするために、多くの場合、コントローラーごとに分割されますが、これらはすべてapplication.cssから要求されます。その場合、Application.cssはあなたが呼び出す唯一のスタイルシートstylesheet_link_tagです

于 2012-07-03T07:14:44.080 に答える
0

これは私にとってニュースだったので、共有します。Rails4では、application.js|cssマニフェストファイルファイルのみがRailsによって自動コンパイルされます。次のようなものを使用している場合

javascript_include_tag controller_name
# ex javascript_include_tag 'guitars'

上記のように、カスタムマニフェスト(「ギター」)をconfig.assets.precompileに追加する必要があるようです。これはRails3.2からの変更だと{信じています}。

于 2013-11-06T16:54:33.673 に答える