【问题标题】:Implicit creation of helpers - routes.rb and 'match' statements隐式创建助手 - routes.rb 和 'match' 语句
【发布时间】:2011-06-03 04:26:19
【问题描述】:

我正在阅读 Obie Fernandez 的“The Rails 3 Way”,其中有些内容我不确定我是否理解正确。我是 Rails 新手,想确保我理解正确。我对香草红宝石有一些经验。不多,但有一些。

有问题的文字如下:(关于路由和config/routes.rb文件)

"...

通过创建类似的路线

match 'auctions/:id' => "auction#show", :as => 'auction'

您可以在以下情况下使用良好的辅助方法

link_to item.description, auction_path(item.auction)

..."

我的问题是,具体来说match 'auctions/:id' => "auction#show", :as => 'auction' 的哪一部分创建了辅助函数? (例如 link_to auctionauction_path() )是 :as => 'auction' 部分吗?是否会在不附加 :as => 'auction' 的情况下创建任何助手?

我的困惑源于我见过的其他指南省略了这一点,但无论如何似乎都创建了助手。 rails 在 routes.rb 文件中的 match 语句中具体使用什么来创建帮助程序?如果不是:as => 'auction' 部分,那么将其附加到match 语句的具体目的是什么?

我知道这似乎是一个超级基本的问题,但这个细节似乎在我迄今为止阅读的文本中被掩盖了。提前感谢您对此提供的任何启发。

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    我刚试过这个:

    match "alfa/beta", to: 'users#new'
    

    在这种情况下,即使没有:as => 'named_route',我也免费获得了以下助手

    alfa_beta_path
    

    正如预期的那样,它指向users#new。 因此,如果没有:as 规范,似乎也可以通过解析路由的字符串自动生成助手。

    【讨论】:

      【解决方案2】:

      是的,是 :as => 'named_route' 部分创建了命名路由(这反过来又创建了助手)。至于把它关掉,你指的是routes.rb中的resources :something的实例吗? resources 方法会根据资源名称自动生成一组 URL 助手。

      【讨论】:

      • 感谢您的回答。我指的是我在 github 上阅读的其他人的代码,以尝试熟悉 Rails 的工作原理,以及我自己迄今为止对 Rails 的摸索。 (我有大约一周的使用 Rails 的经验,大约有 6 个月的使用 ruby​​ 的经验。)我开始觉得我最好不要对任何 ruby​​ 都不了解。这为我迄今为止遇到的帮助者问题提供了很多启示。如果我有更多的声誉,我会更新你的答案。再次感谢!
      • 有一个知识门槛(至少对我而言),Rails 不再那么“神奇”并开始变得有意义。 Rails 代码可能有点让人不知所措,但阅读它是了解事情如何运作的好方法。我认为最终在开始学习 Rails 之前了解 Ruby 会更好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多