4

ルーティング URL 名ヘルパーが確実に機能するようにするには、どのような基本設定が必要ですか?

たとえば、私のルートには次のものがあります。

Blog::Application.routes.draw do
  resources :news, :as => :news_items, :controller => :news_items, :only => [:show, :index]

  scope :module => "refinery" do
    scope(:path => 'refinery', :as => 'admin', :module => 'Admin') do
      resources :news, :except => :show, :as => :news_items, :controller => :news_items
    end
  end
end

しかし、以下はうまくいかないようです:

new_refinery_news_url

エラーが発生し続けます

未定義のローカル変数またはメソッド「new_refinery_news_url」

したがって、Gemfile に追加された RefineryCMS gem にメイン ルーティングがあるアプリケーションの構成方法に何かが欠けていると確信しています。

何かご意見は?

4

4 に答える 4

5

main_app.new_refinery_news_url代わりに使用する必要がありました。

于 2012-02-05T04:14:50.613 に答える
2

ヘルパー名は になりますnew_admin_news_item_url

すべてのルートとそのヘルパー メソッドを簡単に見つけることができます。実行するrake routesと、次のように表示されます。

          news_items GET    /news(.:format)                   {:action=>"index", :controller=>"news_items"}
           news_item GET    /news/:id(.:format)               {:action=>"show", :controller=>"news_items"}
    admin_news_items GET    /refinery/news(.:format)          {:action=>"index", :controller=>"refinery/Admin/news_items"}
                     POST   /refinery/news(.:format)          {:action=>"create", :controller=>"refinery/Admin/news_items"}
 new_admin_news_item GET    /refinery/news/new(.:format)      {:action=>"new", :controller=>"refinery/Admin/news_items"}
edit_admin_news_item GET    /refinery/news/:id/edit(.:format) {:action=>"edit", :controller=>"refinery/Admin/news_items"}
     admin_news_item PUT    /refinery/news/:id(.:format)      {:action=>"update", :controller=>"refinery/Admin/news_items"}
                     DELETE /refinery/news/:id(.:format)      {:action=>"destroy", :controller=>"refinery/Admin/news_items"}
于 2011-11-30T05:05:39.650 に答える
1

マウント可能なエンジンでは、常に「main_app」を指定する必要があります。(または Refinery ルートの場合は "refinery.") プレフィックス。これは、エンジンがアプリケーションから分離されているためです。

于 2012-05-05T04:18:08.317 に答える