如何在Rails应用程序中包含带有自定义css和js文件的静态页面

pur*_*zen 3 html javascript css layout ruby-on-rails

我正在研究一个基本的Rails应用程序(Rails版本4.1),我想在其中包含一个静态页面.我有一个具有以下目录结构的静态页面:

| | - index.html | - css文件夹| - (某些css文件)| - js文件夹| - (某些js文件)| - images文件夹| - (某些图像)

如何将其包含在我的应用程序中?我打算把它作为我的主页顺便说一下.

我已经尝试在控制器中使用'layout'关键字,将html文件包含在'app/views/layout'目录中.但是,我最多能够呈现'index.html'文件,但它错过任何样式,即呈现为纯文本.通过使用HighVoltage gem,我已经能够获得相同的结果.

Ric*_*eck 5

当你提到"静态"页面时 - 所有页面在Rails中都是静态

Rails只使用数据库中的数据呈现HTML.就像PHP(许多开发人员可以欣赏)一样,Rails是一个处理器,它允许您view使用所需的数据填充.

这意味着如果你想创建一个"静态"页面,你只需要不从db中提取任何数据:

#config/routes.eb
root: "application#home"

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
   def home
   end
end
Run Code Online (Sandbox Code Playgroud)

这将使您能够加载以下视图:

#app/views/application/home.html.erb
Put stuff here
Run Code Online (Sandbox Code Playgroud)

资产

现在,稍微棘手的部分是为此视图包含正确的资产.

你提到你有自己的directory结构.现在让我告诉您,通过从资产管道创建和提供资产,您将获得更好的服务.

这是如何做:

#app/views/layouts/application.html.erb
<head>
  ...
  <% if controller_name == "application" && action_name == "home" %>
     <%= stylesheet_link_tag "welcome" %>
     <%= javascript_include_tag "welcome" %>
  <% end %>
</head>
Run Code Online (Sandbox Code Playgroud)

这将使您能够调用以下内容:

#app/assets/stylesheets/welcome.css
...

#app/assets/javascripts/welcome.js
...
Run Code Online (Sandbox Code Playgroud)

最后,如果您随后将"欢迎"文件添加到资产预编译列表中,它应该适合您:

#config/application.rb
Rails.application.config.assets.precompile += ['welcome.js', 'welcome.css']
Run Code Online (Sandbox Code Playgroud)