就像标题一样,我edit
在控制器中遇到了奇怪的问题。当我尝试获取时,错误是
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
让我想到了上面的错误。这真的很奇怪,因为我的参数看起来像这样:
{"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