【问题标题】:Rails 3 - No Route Matches ErrorRails 3 - 没有路线匹配错误
【发布时间】:2012-07-26 09:19:34
【问题描述】:

这是我对stackoverflow的第一个问题,我觉得自己无法修复这个错误有点愚蠢,但是就这样吧。

我正在尝试将页面索引上的链接连接到编辑操作,但出现以下错误:

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

显然我首先检查了控制器 - 那里肯定有一个编辑操作!

这是我的相关 rake 路由输出:

      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 %>

我确实有一个糟糕的习惯,就是看不到我的错别字,所以如果我犯了一个愚蠢的错误,它会解释为什么我无法修复这个错误。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 routing


    【解决方案1】:

    试试:

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

    如果您仔细查看路线输出:

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

    路径 edit_page 需要传递一个 :id。

    【讨论】:

    • 我这样做了,并从行的中间删除了 page 变量,它工作得很好。非常感谢!不敢相信我错过了那个。
    【解决方案2】:

    编辑链接应该是这样生成的

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

    正如 Erez 指出的,:id 是必需的,它是从 page 检索到的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多