就像在標題中,我有奇怪的問題進入控制器中的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
請把你的'rake routes'輸出 –
完成,編輯我的帖子 – Leo