处理静态页面路由的最佳方式

时间:2013-04-15 17:55:19

标签: ruby-on-rails routes url-routing

我有一个rails应用程序,我想介绍一些静态页面。由于我的应用程序同时拥有" public"面对全面的管理后端,我决定将我的控制器移动到相应的子文件夹中,因此app / controllers只包含两个子文件夹。

现在,我正在创建一个包含公司政策的政策部分。

到目前为止,我已经提出了这个解决方案,但它无法正常工作

namespace :policy, path: 'politik' do
  get 'miljoe'
  get 'kvalitet'
  get 'kunde'
  get 'personale'
end

这会创建以下路线:

                 policy_miljoe GET    /politik/miljoe(.:format)                      policy#miljoe
               policy_kvalitet GET    /politik/kvalitet(.:format)                    policy#kvalitet
                  policy_kunde GET    /politik/kunde(.:format)                       policy#kunde
              policy_personale GET    /politik/personale(.:format)                   policy#personale

短路线和正确的路径。这一切都很棒,除了...... 它在应用程序/控制器中查找控制器,而不是在app / controllers / public中查找。添加

namespace :policy, path: 'politik', controller: 'public/policy' do

没有做到这一点。

我唯一的解决方案"到目前为止,一直在创建一个指向控制器的虚假资源路由,并执行其他收集路由,如下所示:

resources :policy, path: 'politik', controller: 'public/policy', only: [] do
  collection do
    get 'miljoe'
    get 'kvalitet'
    get 'kunde'
    get 'personale'
  end
end

这有效,但它

  • 没有明显原因附加索引url帮助器,因此我没有使用policy_miljoe_path而是获得miljoe_policy_index_path。
  • 以一种奇怪的方式阅读,因为资源意味着宁静,而且这些页面没有任何宁静。

如何在路由器中最好/最优雅地声明这些静态页面,并维护一个与路由器中的目录结构/politik/kvalitet不同的url结构,但文件夹结构中只有/public/policy/kvalitet?< / p>

1 个答案:

答案 0 :(得分:0)

我最终使用scope来完美地解决问题:

scope module: 'public' do
  namespace :policy, path: 'politik' do
    get 'miljoe'
    get 'kvalitet'
    get 'kunde'
    get 'personale'
  end
end

这会生成以下帮助者,网址和操作。

    policy_miljoe GET    /politik/miljoe(.:format)       public/policy#miljoe
  policy_kvalitet GET    /politik/kvalitet(.:format)     public/policy#kvalitet
     policy_kunde GET    /politik/kunde(.:format)        public/policy#kunde
 policy_personale GET    /politik/personale(.:format)    public/policy#personale
相关问题