2013-08-30 52 views
0

就像在標題中,我有奇怪的問題進入控制器中的edit行動。當我試圖讓,錯誤是沒有路線匹配{:action =>「show」...}而params [:action]返回「編輯」

ActionController::UrlGenerationError at /pages/header/foo/edit 
No route matches {:action=>"show", :controller=>"pages", :menu=>#<Page id: 1, title: "tytul", slug: "foo", name: "kupa", position: 1, created_at: "2013-08-27 12:46:26", updated_at: "2013-08-30 07:57:58", menu: "header">, :id=>nil, :format=>nil} missing required keys: [:id] 

我想可能是連接到我的routes.rb文件,該文件使用路徑來定義資源:

resources :pages, path: "pages/:menu" 

所以,當我鍵入如www.example.dev/pages/forum/interesting_topic我得到適當的響應,採取行動show@page = interesting_topic (and :menu = "forum")。 但另一方面www.example.dev/pages/forum/interesting_topic/edit帶我到上面的錯誤。這真的很奇怪,因爲我的PARAMS是這樣的:

{"action"=>"edit", "controller"=>"pages", "menu"=>"forum", "id"=>"interesting_topic"} 

這怎麼可能,我有正確的參數,可以用正確的動作edit,並仍然得到錯誤談到有關行動show ......? (也許值得一提的是,去年better-errors應用程序頁面,正是我需要的,意思是形式,使之更加怪異)

編輯 耙路線

sort_pages GET /pages/:menu/sort(.:format)     pages#sort 
    save_order_pages POST /pages/:menu/save_order(.:format)   pages#save_order 
       pages GET /pages/:menu(.:format)      pages#index 
        POST /pages/:menu(.:format)      pages#create 
      new_page GET /pages/:menu/new(.:format)     pages#new 
      edit_page GET /pages/:menu/:id/edit(.:format)    pages#edit 
       page GET /pages/:menu/:id(.:format)     pages#show 
        PATCH /pages/:menu/:id(.:format)     pages#update 
        PUT /pages/:menu/:id(.:format)     pages#update 
        DELETE /pages/:menu/:id(.:format)     pages#destroy 

第二。編輯

,因爲我刪除一切從部分通過「編輯」視圖中呈現,它突然開始工作,我在這裏給它,與編輯操作

= simple_form_for @page do |f| 
    .inputs 
    = f.input :title 
    = f.input :slug 
    = f.input :name 
    .actions 
    =f.button :submit 

和控制器

before_filter :set_page, only: [:edit, :update, :destroy] 

def edit 
end 

private 

    def set_page 
    @page = Page.find_by_slug!(params[:id]) 
    end 
+0

請把你的'rake routes'輸出 –

+0

完成,編輯我的帖子 – Leo

回答

0

檢查服務器會在您的編輯視圖中登錄您的終端窗口 - 您可能無法鏈接到顯示頁面。

編輯:哦,我明白了,這是一個路由問題。因爲在路由中有一個額外的變量(:menu以及:id),所以在定義表單時需要提供額外的變量。

請嘗試以下(如果菜單是應該平等 '論壇')

= simple_form_for :forum, @page do |f| 

(離開其餘相同)

+0

我沒有鏈接在我的編輯視圖中顯示頁面,只是渲染「表格」... – Leo

+0

和w帽子是以這種形式偏? – sevenseacat

+0

和形式,只是simple_form,沒有鏈接,沒有什麼 – Leo

0

改變simple_form形式到這個工作對我來說:

= simple_form_for @page, url: @page.new_record? ? pages_path(params[:menu]) : page_path(params[:menu], @page) 
相關問題