所以,我收到了这个错误
Couldn't find MenuBar with ID=add_page_to_menu
但是我创建该错误的链接代码如下:
<%= link_to "add",
:controller => "admin/menu_bars",
:action => "add_page_to_menu",
:page => page.id,
:menu => @menu_bar.id %>
我收到错误的网址是
http://example.com/admin/menu_bars/add_page_to_menu?menu=1&page=1
它应该看起来像example.com/admin/menu_bars/add_page_to_menu/1?menu=1&page=1
(我想,我可能是错的,看到它不起作用=(
控制器中的相应操作:
def add_page_to_menu
@menu_bar = MenuBar.find(params[:menu])
@page = LinkPage.find(params[:page])
@menu_bar.link_pages << @page
if @menu_bar.save
format.html { render :action => "edit" }
else
format.html { render :action => "edit" }
format.xml { render :xml => @menu_bar.errors, :status => :unprocessable_entity }
end
end
路线:
map.namespace "admin" do |admin|
admin.root :controller => :site_prefs, :action => :index
admin.resources :site_prefs
admin.resources :link_pages
admin.resources :menu_bars
end
答案 0 :(得分:0)
您的路线将转到
http://example.com/admin/menu_bars/:id?menu=1&page=1
所以Rails正在寻找ID为MenuBar
的{{1}}。您需要将成员方法添加到自定义操作的路由中。路线应如下所示:
map.namespace "admin" do |admin| admin.root :controller => :site_prefs, :action => :index admin.resources :site_prefs admin.resources :link_pages admin.resources :menu_bars, :member => { :add_page_to_menu => :get } end
并且add_page_to_menu
看起来像这样:
link_to
并且生成的网址应如下所示:
link_to("add", menu_bar_add_page_to_menu_path(@menu_bar, :page => @page.id)
还有一些优化工作要做,但我认为至少会让你超越这个问题。