0

いくつかの静的ページを紹介したい Rails アプリがあります。私のアプリには「パブリック」フェイスと包括的な管理バックエンドの両方があるため、コントローラーを対応するサブフォルダーに移動することにしました。そのため、アプリ/コントローラーには 2 つのサブフォルダーのみが含まれます。

現在、会社のポリシーを含むポリシー セクションを作成しています。

私はこれまでこの解決策を考え出しましたが、うまくいきません

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 ではなく、app/controllers でコントローラーを探します。を追加する

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

これは機能しますが、

  • appends は明確な理由もなく URL ヘルパーのインデックスを作成するため、policy_miljoe_path の代わりに miljoe_policy_index_path を取得します。
  • リソースは安らぎを意味し、これらのページには安らぎが何もないため、奇妙な方法で読み取ります。

/politik/kvalitetこれらの静的ページをルーターで最善/最もエレガントに宣言し、ルーターのディレクトリ構造とは異なるが/public/policy/kvalitetフォルダー構造で見えるURL構造を維持するにはどうすればよいですか?

4

1 に答える 1

0

私はscope問題を完全に解決するものを使用することになりました:

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

これにより、次のヘルパー、URL、およびアクションが生成されます。

    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
于 2013-05-15T00:30:52.537 に答える