需要帮助在Sinatra中组织我的文件和路线(将旧的PHP站点移动到Sinatra)

时间:2013-03-08 17:05:27

标签: ruby sinatra rack

以下是我如何在PHP中组织网站 clothes.com 的示例:

index.php
style/
  style.css
men/
  index.php
  style/
    style.css
women/
  index.php
  style/
    style.css

您如何在Sinatra组织同一个网站?我很困惑,因为Sinatra似乎对“文件夹”结构不起作用,但你要在同一个文件中使用路径:

get '/' do
  haml :index
end

get 'men' do
  haml :men
end

get 'women' do
  haml :women
end

问题是所有内容都使用此模型进入相同的“公共”文件夹。这是应该组织的方式吗?

你如何组织样式表文件,每个文件都有不同的索引,男人,女人?他们是否也应该进入同一个“公共”文件夹?

2 个答案:

答案 0 :(得分:1)

老实说,来自PHP 很困难。

您的网站有一些注意事项。你想保持旧网站的结构吗?如果是,您将必须在Sinatra中使用相同的路线:

get '/index.php' do
  haml :index
end

get '/men/index.php' do
  haml :men
end

get '/women/index.php' do
  haml :women
end

然后,您还必须将样式文件放入相应的公共文件夹中:

/public
  /style
    style.css
  /men
    /style
      style.css
  /women
    /style
      style.css

如果您想保留旧的样式路径,或者从这些旧文件夹重定向到一个文件夹:

get '/men/stye/style.css' do
  redirect '/style/men_style.css'
end

fet '/women/style/style.css' do
  redirect '/style/men_style.css'
end

如果您编写所有新的haml模板,可以直接将它们放入/public文件夹。

请记住,当您通过style.css(无路径)在haml模板内部调用样式文件时,Sinatra会在检查路由之前首先查看/public/style.css

答案 1 :(得分:0)

我总是在我的sinatra项目中使用以下模板: Sinatra Github project template

编辑:如果你查看路线文件夹,你会看到他使用init.rb文件来要求他的其他路线。

另外,我通常会像这样组织我的CSS:

public/
    css/
         main.css
         men.css
         women.css

如果css文件夹中包含太多css文件,我通常会这样做:

public/
    css/
        men/
            men.css
            more.css
            evenmore.css
        women/
            women.css