无法访问rake routes命令指定的路径

时间:2011-12-08 05:55:03

标签: ruby-on-rails routing rake

我似乎无法正确理解rails 3.1中的路由。

(请记住我正在开发一个依赖于炼油厂cms宝石的项目) 在我的路线中,我有以下内容:

Blog::Application.routes.draw do

  resources :news, :as => :news_items, :controller => :news_items, :only => [:show, :index]

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

rake routes命令的输出是:

news_items GET    /news(.:format)                              {:action=>"index", :controller=>"news_items"}
                              news_item GET    /news/:id(.:format)                          {:action=>"show", :controller=>"news_items"}
              refinery_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_refinery_admin_news_item GET    /refinery/news/new(.:format)                 {:action=>"new", :controller=>"refinery/admin/news_items"}
          edit_refinery_admin_news_item GET    /refinery/news/:id/edit(.:format)            {:action=>"edit", :controller=>"refinery/admin/news_items"}
               refinery_admin_news_item GET    /refinery/news/:id(.:format)                 {:action=>"show", :controller=>"refinery/admin/news_items"}
                                        PUT    /refinery/news/:id(.:format)                 {:action=>"update", :controller=>"refinery/admin/news_items"}
                                        DELETE /refinery/news/:id(.:format)                 {:action=>"destroy", :controller=>"refinery/admin/news_items"}

我的应用程序中的以下代码导致错误:

<%= form_for [:refinery, @news_item] do |f| %>
<% end %>

告诉我以下路径:

undefined method `refinery_news_items_path' for #<#<Class:0x0000010663c480>:0x00000106623980>

不存在。

来自rake routes命令的任何路径都不起作用。我非常有信心这是一个设置问题。我实际上是在不使用插件生成器的情况下为RefineryCMS gem编写插件,我只是将它构建为一个普通的Web应用程序。

我的项目是为那些关心巅峰的人而设的。 http://github.com/mabounassif/blog

任何人都知道可能是什么问题?

2 个答案:

答案 0 :(得分:0)

您将“炼油厂”范围定义为“refinery_admin”,因此当您执行佣金路线时,您获得refinery_admin_news_items

如果您取出:as => 'refinery_admin'条款,您的路线将返回“正常”

答案 1 :(得分:0)

似乎问题在于Refinery CMS gem的工作方式。显然我不应该立即使用网址助手,我应该使用以下代码:

main_app.new_refinery_admin_news_item_path