有一种情况,其中有一个像town_center控制器,锯木厂控制器,采石场控制器等多个控制器。基于路线的不同控制器:名称
我的应用程序的URL可能需要像/ town_center/view或sawmill/view,采石场/视图等。
问题是如何实际编写这样的路线。例如,对于town_center控制器我有类似的东西:
scope :path => '/town_center', :controller => :town_center do
get '/view/' => :view, :as => 'town_center'
end
虽然这工作正常,但有一个问题。当我实际上在town_center控制器中执行视图操作时,没有简单的方法来获取建筑物的id,因为它不作为params属性出现在url中。
一个简单的想法是创建一个类似路线:
get '/view/:name' => :view, :as => 'view_building'
但这种做法的问题是,一切都被重定向到一个控制器。所以,我的问题是,我如何使它在URL上有一个标识符,仍然重定向到特定的控制器?
或者如果您认为这是不正确的一般想法,有没有更好的方法来做到这一点?
是的,我知道这些,但我不喜欢使用资源,我更喜欢手动编写我的路线。我知道我可以使用:id作为网址的一部分,但我觉得这是多余的,因为只有一个城镇中心有一个ID。但我想这是一条安全的步行路线。 – Spyros 2012-02-02 01:24:24
所以你说每个实体的ID是静态的?如果这些是硬编码的ID,那么您应该能够将它们作为路由定义的一部分传递给它们。例如:'get'/ view /'=>:view,:as =>'town_center',:id => 14' – Ryan 2012-02-02 01:40:21
路由资源不一定是复数。你可以有资源:town_center。我不会推荐滚动你自己的路线。 – 2012-02-02 01:51:36