2012-07-26 344 views
0

这是我的第一个问题stackoverflow,我觉得有点愚蠢无法自己修复错误,但在这里。Rails 3 - 没有路由匹配错误

我试图在一个网页索引链接连接到编辑动作,我得到以下错误:

No route matches {:action=>"edit", :controller=>"pages"} 

所以,很显然我先检查了控制器 - 有绝对的编辑操作在那里!

这里是我的相关耙路输出:

 pages GET /pages(.:format)   pages#index 
      POST /pages(.:format)   pages#create 
    new_page GET /pages/new(.:format)  pages#new 
    edit_page GET /pages/:id/edit(.:format) pages#edit 
     page GET /pages/:id(.:format)  pages#show 
      PUT /pages/:id(.:format)  pages#update 
      DELETE /pages/:id(.:format)  pages#destroy 

而且我的config/routes.rb文件:

Portfolio::Application.routes.draw do 
    resources :pages 
    resources :sessions, only: [:new, :create, :destroy] 
    resources :users 

    root to: 'pages#home' 

    match '/signup', to: 'users#new' 
    match '/signin', to: 'sessions#new' 
    match '/signout', to: 'sessions#destroy', via: :delete 
    match '/admin', to: 'admin#index' 
    match '/new',  to: 'pages#new' 
    match '/edit',  to: 'pages#edit' 

    match '*path', :controller => 'redirect', :action => 'index' 

而控制器动作,以防万一。

def edit 
    @page = Page.find(params[:id]) 
    end 

我想我也想给视图,其中路径被称为:

<% Page.where("parent_id IS NULL").each do |page| %> 
    <li> 
    <%= link_to page.title, page %> 
    <%= link_to "Edit", page, edit_page_path %> 
    <%= link_to "Delete", page, method: :delete, 
           data: { confirm: "You sure?" } %> 
    </li> 
<% end %> 

我有没有看到我的错别字的可怕的习惯,所以,如果我做了一个愚蠢的一个这将解释为什么我无法解决这个问题。

任何帮助,将不胜感激。

谢谢!

回答

1

尝试:

<%= link_to "Edit", edit_page_path(page) %> 

如果你看看你的路由输出接近:

edit_page GET /pages/:id/edit(.:format) pages#edit 

路线edit_page需要:ID要传递给。

+0

我做到了这一点,并从行的中间删除了页面变量,它完美地工作。非常感谢!不能相信我错过了那一个。 – ToriBean 2012-07-26 09:30:42

0

编辑链接应这样

<%= link_to "Edit", edit_page_path(page) %> 

生成作为埃雷兹指出,:id需要其从page检索。

检查link_to签名可能的方式来传递参数。第一个/第二个参数适用于urlurl_options,而第三个参数适用于html_options

相关问题