在 sinatra 中隔离路由和控制器
Segregate routes and controller in sinatra
目前 Sinatra
控制器看起来像这样,
class UserController < Sinatra::Base
get '/' do
# code goes here
end
end
我怎样才能让它像Rails
# routes.rb
get '/user' => 'user_controller#index'
你可以做一个创建路由的方法。
看我做的例子:
require 'sinatra'
class UserController
def index
'UserController -> index!'
end
def posts
'UserController -> posts!'
end
end
def route_get(url, call)
controller_class, method = call.split('#')
controller_class = Object.const_get(controller_class)
Sinatra::Base.get url do
controller_class.new.send(method)
end
end
route_get '/', 'UserController#index'
route_get '/users', 'UserController#index'
route_get '/users/posts', 'UserController#posts'
如果你愿意,你可以为HTTP做其他的方法。或者你可以传递其他参数。
目前 Sinatra
控制器看起来像这样,
class UserController < Sinatra::Base
get '/' do
# code goes here
end
end
我怎样才能让它像Rails
# routes.rb
get '/user' => 'user_controller#index'
你可以做一个创建路由的方法。
看我做的例子:
require 'sinatra'
class UserController
def index
'UserController -> index!'
end
def posts
'UserController -> posts!'
end
end
def route_get(url, call)
controller_class, method = call.split('#')
controller_class = Object.const_get(controller_class)
Sinatra::Base.get url do
controller_class.new.send(method)
end
end
route_get '/', 'UserController#index'
route_get '/users', 'UserController#index'
route_get '/users/posts', 'UserController#posts'
如果你愿意,你可以为HTTP做其他的方法。或者你可以传递其他参数。