だから私はこのような2つのクラスがあります。
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のhaltヘルパーをどのように使用できますか?
回答:
回答№1は2あなたは "複雑すぎることをしました。 ヘルパー ドキュメントのセクション
これをアプリケーションコントローラに入れます。
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アプリ全体ではなく「それだ」継承とリソースへの依存は必須ではありません。アプリのデプロイ後に動的にページを追加しない限り、ルートをより明確に定義することもできます。
グローバルを使用しないでください。実際に使用したのを最後に見たときのことを思い出すことはできません。もっと良い方法がたくさんあります。あなたがあなたがそれを必要とすると思うならば、それは「あなたが手掛かりである」間違った道を進んでいます。