Sinatra 路由函数调用和助手
Sinatra route function call & helpers
所以我有两个这样的类。
class ApplicationController < Sinatra::Base
# don't enable logging when running tests
configure :production, :development do
enable :logging
end
get '/*' do
$request = request
PageController::render
end
end
和
class PageController < ApplicationController
def self.render()
@page = Page.find_by permalink: $request.path_info
if @page then
else
halt 400
end
end
end
一切顺利,直到我到达停止语句。未找到方法。我如何在此函数调用中使用 Sinatra 停止助手?
你把事情想得太复杂了。请参阅文档的 Helpers 部分。
将其放入您的应用程序控制器中:
helpers do
def render
@page = Page.find_by permalink: request.path_info
if @page then
else
halt 400
end
end
end
现在您的路线将是:
get '/*' do
render
end
不过,你问我太复杂了,没必要模仿Rails。为什么不保持简单?
require 'sinatra'
get '/*' do
@page = Page.find_by permalink: request.path_info
if @page then
haml :something
else
halt 400
end
end
就是这样,这就是整个 Sinatra 应用程序,无需求助于继承和不需要的结构。除非您在部署应用程序后动态添加页面,否则我还会更明确地定义路由。
不要使用全局变量。我实际上不记得上次看到有人使用它是什么时候了,有很多更好的选择。如果您发现自己需要一个,那就表明您走错了路。
所以我有两个这样的类。
class ApplicationController < Sinatra::Base
# don't enable logging when running tests
configure :production, :development do
enable :logging
end
get '/*' do
$request = request
PageController::render
end
end
和
class PageController < ApplicationController
def self.render()
@page = Page.find_by permalink: $request.path_info
if @page then
else
halt 400
end
end
end
一切顺利,直到我到达停止语句。未找到方法。我如何在此函数调用中使用 Sinatra 停止助手?
你把事情想得太复杂了。请参阅文档的 Helpers 部分。
将其放入您的应用程序控制器中:
helpers do
def render
@page = Page.find_by permalink: request.path_info
if @page then
else
halt 400
end
end
end
现在您的路线将是:
get '/*' do
render
end
不过,你问我太复杂了,没必要模仿Rails。为什么不保持简单?
require 'sinatra'
get '/*' do
@page = Page.find_by permalink: request.path_info
if @page then
haml :something
else
halt 400
end
end
就是这样,这就是整个 Sinatra 应用程序,无需求助于继承和不需要的结构。除非您在部署应用程序后动态添加页面,否则我还会更明确地定义路由。
不要使用全局变量。我实际上不记得上次看到有人使用它是什么时候了,有很多更好的选择。如果您发现自己需要一个,那就表明您走错了路。