簡體   English   中英

Ruby on Rails:link_to沒有適當的ID

[英]Ruby on Rails: link_to not having appropriate ID

所以,我得到了這個錯誤

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

您的路線即將到達

http://example.com/admin/menu_bars/:id?menu=1&page=1

因此,Rails正在尋找一個ID為add_page_to_menuMenuBar 您需要向路由添加成員方法以進行自定義操作。 路線應如下所示:

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

並且link_to應該看起來像這樣:

link_to("add", menu_bar_add_page_to_menu_path(@menu_bar, :page => @page.id)

產生的網址應如下所示:

http://example.com/admin/menu_bars/1/add_page_to_menu?page=1

仍然需要進行一些優化,但是我認為至少可以使您超越此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM