Sinatra 其实是一个 Padrino 的问题,请教下

yfeng4r · 2013年06月28日 · 最后由 hooopo 回复于 2013年06月28日 · 3375 次阅读

config/app.rb中有一行 Padrino.mount('Demo::App', :app_file => Padrino.root('app/app.rb')).to('/')

比如访问http://localhost:3000 这个地址貌似代码要放在 app.rb 中? 但是我想创建一个如IndexController#index这样的方法,这个如何改呢?

我看 robbin 的代码 Padrino.mount('RobbinSite').to('/') 这个 RobbinSite 哪来的呢?

#4 楼 @reyesyang 我看这个文件是 class RobbinSite < Padrino::Application 开始的, 我项目生成的却是 module Demo class App < Padrino::Application 是版本不同生成的代码不同?

那就是一个普通的 ruby 类名,你可以改,只要在 config/apps.rb 中 mount 时指定正确就可以了。

#6 楼 @reyesyang OK..再问下,如何让访问首页是直接定位到 Controller 中的方法呢?

你看下这个 controller: https://github.com/robbin/robbin_site/blob/master/app/controllers/home.rb

就是你想要的,直接定位到根路径的。

秘诀就是这行:

RobbinSite.controllers do

不要定义 controllers 的命名空间,就会直接定位到根路径

get :index do @blogs = Blog.order('id DESC').page(params[:page]) render 'home/index' end

这个方法就是访问整个网站首页。

#8 楼 @robbin 原来如此,其实就是把 Demo::App.controllers index do ... end 中的 index 拿掉,呵呵,谢了!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号