代码之家  ›  专栏  ›  技术社区  ›  Nate Pinchot

在Sinatra中查看特定的样式表(按命名约定)

  •  0
  • Nate Pinchot  · 技术社区  · 16 年前

    考虑一下这个简单的应用程序:

    app_folder_root/
    | my_app/
    |   my_app.rb
    | public/
    |   css/
    |     index.css
    |     layout.css
    | views/
    |   index.haml
    |   layout.haml
    config.ru
    

    配置.ru:

    require 'rubygems'
    require './my_app/my_app'
    
    map '/' do
      run MyApp
    end
    

    require 'sinatra/base'
    
    class MyApp < Sinatra::Base
      get '/' do
        haml :index
      end
    end
    

    我试着在 my_app.rb 设置视图的名称并尝试在中引用它 layout.haml

    这是使用Haml,但我希望这是无关的-认为它应该是相同的erb等。

    布局.haml ,我想引用将被呈现的视图,并通过命名约定包含特定于视图的样式表。例如,如果 index.haml 是要渲染的,我想包括 css/index.css . 做这件事最好的方法是什么?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Nate Pinchot    16 年前

    我通过以下方法解决了这个问题:

    index.haml views :

    - @views = Array.new unless defined? @views
    - @views << 'index'
    

    layout.haml @views :

    %head
      - @views.each do |view|
        - haml_tag :link, {:rel => 'stylesheet', :type => 'text/css', :href => "css/#{view}.css"}
    

    @视图 在视图中,确保在附加到它之前定义了它,但目前它是可管理的。

    @视图 在每个视图中定义。在 config.ru

    before do
      @views = Array.new
    end
    

    我现在可以从视图中删除这一行:

    - @views = Array.new unless defined? @views
    
    推荐文章