我似乎无法正确理解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
任何人都知道可能是什么问题?
答案 0 :(得分:0)
您将“炼油厂”范围定义为“refinery_admin”,因此当您执行佣金路线时,您获得refinery_admin_news_items
如果您取出:as => 'refinery_admin'
条款,您的路线将返回“正常”
答案 1 :(得分:0)
似乎问题在于Refinery CMS gem的工作方式。显然我不应该立即使用网址助手,我应该使用以下代码:
main_app.new_refinery_admin_news_item_path