Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Rails应用程序中包含带有自定义css和js文件的静态页面_Javascript_Html_Css_Ruby On Rails_Layout - Fatal编程技术网

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

Javascript 如何在Rails应用程序中包含带有自定义css和js文件的静态页面,javascript,html,css,ruby-on-rails,layout,Javascript,Html,Css,Ruby On Rails,Layout,我正在开发一个基本的Rails应用程序(Rails版本4.1),我希望在其中包含一个静态页面。我得到了具有以下目录结构的静态页面: | |-index.html |-css文件夹 |--(一些css文件) |-js文件夹 |--(一些js文件) |-图像文件夹 |--(部分图片) 如何将其包含在我的应用程序中?顺便说一句,我打算把它作为我的主页 我尝试在控制器中使用“layout”关键字,将html文件包含在“app/views/layout”目录中。但是,我最多只能呈现'index.html'

我正在开发一个基本的Rails应用程序(Rails版本4.1),我希望在其中包含一个静态页面。我得到了具有以下目录结构的静态页面:

| |-index.html |-css文件夹 |--(一些css文件) |-js文件夹 |--(一些js文件) |-图像文件夹 |--(部分图片)

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

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

因为您的主页有自定义样式和js,所以您需要在其他视图中对其进行更多操作为您的主页创建一个控制器,称之为pages\u controller。创建一个自定义操作,比如home,为该操作创建一个路由,然后将html放入该操作视图中

请按照以下步骤进行操作:

  • 创建控制器:
railsg控制器页面

  • 在页面中创建一个操作\u controller.rb
def home;结束

  • 为您的操作创建路线
root:to=>“页面#主页”

默认情况下,这将使用application.html.erb作为布局,并且在application.html.erb中有这一行

<%= stylesheet_link_tag "application", media: "all" %> #this by default load all the css from assets/stylesheets/application.css so you can require your css file inside it
#默认情况下,这会从assets/stylesheets/application.css加载所有css,这样您就可以在其中要求css文件
第页

当您提到“静态”页面时——Rails中的所有页面都是静态的

Rails只是使用数据库中的数据呈现HTML。与PHP(许多开发人员都喜欢)非常相似,Rails是一个处理器,它允许您用所需的数据填充
视图

这意味着,如果要创建“静态”页面,只需不从数据库中提取任何数据即可:

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

#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
   def home
   end
end

资产

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

您提到您有自己的
目录
结构。现在让我告诉您,通过资产管道创建和服务资产,您将得到更好的服务

以下是方法:

#app/views/layouts/application.html.erb
<head>
  ...
  <% if controller_name == "application" && action_name == "home" %>
     <%= stylesheet_link_tag "welcome" %>
     <%= javascript_include_tag "welcome" %>
  <% end %>
</head>
最后,如果您随后将“欢迎”文件添加到资产预编译列表中,那么它应该适用于您:

#config/application.rb
Rails.application.config.assets.precompile += ['welcome.js', 'welcome.css']

如果它只是一个静态页面,那么我认为您最好使用高压gem。你能解释一下你在使用它时遇到了什么问题吗?为什么你不能像往常一样将你所有的css、js和图像放在资产管道中?@Mandeep正如我所写的,我只能将页面呈现为纯文本,即黑白页面,只有大小不同(如.txt文件)。从我看来,它似乎不包括随之而来的资产。我试着把它们放在高压宝石的“pages”文件夹和app/assets文件夹中。@AdityaBhardwaj啊,好的!我看到这么高的电压不允许你使用一个布局文件,你可以加载你的样式表和js@LcLk我试过了,但没用。有没有办法避免将每个文件都添加到预编译列表中?
#app/assets/stylesheets/welcome.css
...

#app/assets/javascripts/welcome.js
...
#config/application.rb
Rails.application.config.assets.precompile += ['welcome.js', 'welcome.css']