【问题标题】:Define Rails routes with annotations like in Symfony使用 Symfony 中的注释定义 Rails 路由
【发布时间】:2012-01-12 20:52:51
【问题描述】:

我目前正在学习 Rails,它很棒,但我真的很喜欢 Symfony 的路由系统。在 Symfony 中,可以使用注释直接在 Controller 中定义路由。例如:

/**
 * @Route("/blog")
 */
class PostController extends Controller
{
    /**
     * @Route("/{id}")
     */
    public function showAction($id)
    {
    }
}

这意味着 /blog/5 将路由到 PostController#showAction。我喜欢这种方法,因为路由是直接在您的操作方法之前定义的,并且从我的角度来看,这比在单个文件中定义所有内容更有意义。

Rails 有类似的东西吗?

谢谢!

【问题讨论】:

    标签: ruby-on-rails symfony routing


    【解决方案1】:

    不,Rails 没有类似的东西。使用 Rails,您必须在 config/routes.rb 中定义路由,并将控制器操作分开。然后,您可以将 cmets 放在声明哪些路由到它的操作上,但大多数人不这样做。

    如果它真的困扰你,你可以使用 Sinatra,它甚至没有控制器的概念。相反,您可以像这样定义方法:

    get '/' do
      "Hello world"
    end
    

    任何转到/GET 请求都会在屏幕上显示“Hello World”。

    Sinatra 是我个人仅用于轻量级应用程序的东西,而对于更重的应用程序,也可以使用其他东西,例如 Padrino 或 Rails。

    【讨论】:

    • 讽刺的是,symfony1 几乎完全提升了 RaR 的路由风格:)
    • 很伤心...知道如何实现这个功能吗?是否有 Ruby 的注释解析类或 PHP 中的反射之类的东西?我想在 Rails 中拥有这个功能。
    • 我不明白为什么这是个好主意。使用routes.rb,您可以将所有路线定义集中在一处。听起来您的建议会将路由定义分散到整个控制器中。不用了。
    • 是的,MVC 有点糟糕,因为您可以将所有内容都写在一个 spaghetti.rb 文件中。
    • 一个有 1000 个动作的应用程序有它自己的问题。这时路由文件可能应该被拆分成更小、更易于管理的块。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2019-10-06
    相关资源
    最近更新 更多