在sinatra上导入css和js文件

时间:2016-07-18 07:13:44

标签: javascript css ruby sinatra

您好我正在创建一个使用bootstrap和jquery的小应用程序,我在导入css和js文件时遇到一些问题。

这是我的layout.erb看起来像。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Portfolio</title>
    <link href="public/css/bootstrap.min.css" rel="stylesheet">
    <script src="public/js/bootstrap.min.js"></script>
    <script src="public/js/jquery-3.1.0.min.js"></script>

</head>
<body>
    <header>
        <nav class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <ul class="nav navbar-nav">
                    <li><a href="#">Home</a></li>
                    <li><a href="#">Projects & Tutorials</a></li>
                    <li><a href="#">The Division Highlights</a></li>
                    <li><a href="#">Contact Us</a></li>
                </ul>
                <p class="navbar-text navbar-right"><a href="#" class="navbar-link"><span class="glyphicon glyphicon-user"></span> Login / Signup</a></p>
            </div>
        </nav>
    </header>

    <section>
        <%= yield %>
    </section>

    <footer>
        <div class="panel panel-default">
            <div class="panel-footer">&copy; Copywrite JDG</div>
        </div>
        </footer>
</body>
</html>

这里是我配置视图文件夹

的文件的地方
require 'rubygems'
require 'sinatra'
require_relative './app'

module Portfolio

  class MainRoutes < Sinatra::Base

    before do
      @user_authentication = Portfolio::Main
    end

    configure do
      set :views          , File.expand_path('../../../Portfolio-FE/views', __FILE__)
      set :root           , File.dirname(__FILE__)
    end

    helpers do
      include Rack::Utils
      alias_method :h, :escape_html
    end

    get '/' do
      erb :index
    end
  end
end

这就是我的文件的样子。

enter image description here

css和js没有在项目中导入,我想知道为什么。

谢谢你们。

2 个答案:

答案 0 :(得分:1)

我找到了答案,

只需像这样设置公用文件夹:

set :public          , File.expand_path('../../../Portfolio-FE/public', __FILE__)

并导入这样的文件。

<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery-3.1.0.min.js"></script>

答案 1 :(得分:0)

除了设置公用文件夹之外,您可能还想使用Sprockets。

我在这里有一个示例应用:https://github.com/katgironpe/simple-sinatra-mvc

http://www.sinatrarb.com/configuration.html

set :root, File.dirname(__FILE__)
set :public_folder, Proc.new { File.join(root, "static") }

按照官方指南进行操作。不要忘记设置应用程序的根目录。