【问题标题】:Set / change + add Sinatra views folder设置/更改 + 添加 Sinatra 视图文件夹
【发布时间】:2013-01-24 05:10:17
【问题描述】:

我正在学习 sinatra,我正在尝试创建简单的网站。这是我的网络目录树:

├── app.rb
│
├── admin
│   └── views
│   └── admin.rb
├── models
├── static
│               
└── views

现在我只想为管理员渲染视图。换句话说:我在不同的位置有 2 个视图文件夹,admin 用于管理控制器和视图,另一个视图用于主页。

【问题讨论】:

  • 您尝试过什么/什么不适合您?我认为这里没有问题,只是一个要求。
  • 我尝试load 'admin/admin.rb',结果不是在admin文件夹中渲染views,而是在root文件夹中渲染views。我尝试将视图文件夹设置为管理员文件夹,它仅适用于管理员。不是主页,我是专门编程 ruby​​/sinatra 的新手。我不知道如何加载不同的视图。
  • 发布您当前用于设置/更改视图文件夹的相关代码。
  • 我已经换了话题.. :)
  • 你为什么不做views/admin?西纳特拉 == 简单。你打破了这个概念:)

标签: ruby model-view-controller sinatra


【解决方案1】:

在根应用程序文件夹中添加 config.ru 文件

require './app'
require './admin/admin'
# run MyApp
run Rack::URLMap.new("/" => MyApp.new, "/admin" => AdminApp.new)

在 app.rb 中

require 'sinatra'
require 'haml'

class MyApp < Sinatra::Base
  get "/app" do
    haml :app
  end
end

在 admin.rb 中

# admin.rb
class AdminApp < Sinatra::Base
  get "/" do
    haml :index
  end
end

终于在控制台rackup -p PORTNUMBER例子中

rackup -p 4000

更新

参考Gist

【讨论】:

  • 您可以将 Db 相关配置包装在模型类中,例如 database.rb(为配置创建文件夹)并使用配置文件在类中加载配置或从 ENV 读取配置。然后,在不同的 Route 文件之间共享它。而且,当然,您必须在路线中加载它。
  • 抱歉之前的评论我被删除了。我已经完成了.. :) 。卓越,:)。谢谢你的帮助。它有效..
猜你喜欢
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 1970-01-01
  • 2013-05-22
  • 2018-06-16
  • 2017-12-01
  • 2010-11-18
  • 1970-01-01
相关资源
最近更新 更多