隐式创建助手 - routes.rb和'match'语句

时间:2011-06-03 04:26:19

标签: ruby-on-rails

我正在读Obie Fernandez的“The Rails 3 Way”,还有一点我不确定我是否理解正确。我是rails的新手,想确保我理解正确。我对vanilla Ruby有一些经验。不多,但有些。

有问题的文字如下:(关于路由和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语句的具体目的是什么?

我知道这似乎是一个超级基本的问题,但这个细节似乎在我迄今为止阅读的文本中被掩盖了。提前感谢您可以获得的任何光线。

2 个答案:

答案 0 :(得分:2)

我刚试过这个:

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

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

alfa_beta_path

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

答案 1 :(得分:1)

是的,:as => 'named_route'部分创建了命名路径(后者又创建了帮助程序)。关于它,你是指resources :somethingroutes.rb的实例吗? resources方法基于资源名称自动生成一组URL帮助程序。