簡體   English   中英

從某些頁面獲取路由錯誤

[英]Getting a routing error from certain pages

我有這條路

profile GET /contacts/:id(.:format) {:controller=>"my_devise/contacts", :action=>"profile"}

這是我的controllers / application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery

  before_filter :get_current_user

    def get_current_user
        @current_user = current_user
    end

end

如果我的view / layouts / application.html.erb文件中的此鏈接<%= link_to "Profile", profile_path(@current_user) %> URL http://localhost:3000/contacts/1上的<%= link_to "Profile", profile_path(@current_user) %> ,我沒有錯誤,但是如果我嘗試點擊url http://localhost:3000/contacts ,則會收到以下錯誤

Routing Error

No route matches {:controller=>"my_devise/contacts", :action=>"profile"}

如果我刪除了application.html.erb文件中的鏈接並點擊http://localhost:3000/contacts ,則錯誤消失了。

為什么該鏈接會導致此錯誤?

編輯

完整路線文件

$ rake routes
          users_sign_out GET    /users/sign_out(.:format)      {:controller=>"devise/sessions", :action=>"destroy"}
           users_sign_in GET    /users/sign_in(.:format)       {:controller=>"my_devise/sessions", :action=>"new"}
                    home GET    /home(.:format)                {:action=>"index", :controller=>"my_devise/sessions"}
                contacts GET    /contacts(.:format)            {:action=>"list", :controller=>"my_devise/contacts"}
                 profile GET    /contacts/:id(.:format)        {:controller=>"my_devise/contacts", :action=>"profile"}
            edit_profile GET    /contacts/:id/edit(.:format)   {:controller=>"my_devise/contacts", :action=>"edit"}
                         POST   /contacts/:id/edit(.:format)   {:controller=>"my_devise/contacts", :action=>"update_user"}
                    more GET    /more/:id(.:format)            {:controller=>"my_devise/contacts", :action=>"more"}
                         POST   /home(.:format)                {:action=>"create_new_user", :controller=>"my_devise/sessions"}
           users_sign_up GET    /users/sign_up(.:format)       {:controller=>"my_devise/registrations", :action=>"new"}
                         POST   /users/sign_up(.:format)       {:controller=>"my_devise/registrations", :action=>"new"}
        new_user_session GET    /users/sign_in(.:format)       {:action=>"new", :controller=>"devise/sessions"}
            user_session POST   /users/sign_in(.:format)       {:action=>"create", :controller=>"devise/sessions"}
    destroy_user_session DELETE /users/sign_out(.:format)      {:action=>"destroy", :controller=>"devise/sessions"}
           user_password POST   /users/password(.:format)      {:action=>"create", :controller=>"devise/passwords"}
       new_user_password GET    /users/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"}
      edit_user_password GET    /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
                         PUT    /users/password(.:format)      {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET    /users/cancel(.:format)        {:action=>"cancel", :controller=>"devise/registrations"}
       user_registration POST   /users(.:format)               {:action=>"create", :controller=>"devise/registrations"}
   new_user_registration GET    /users/sign_up(.:format)       {:action=>"new", :controller=>"devise/registrations"}
  edit_user_registration GET    /users/edit(.:format)          {:action=>"edit", :controller=>"devise/registrations"}
                         PUT    /users(.:format)               {:action=>"update", :controller=>"devise/registrations"}
                         DELETE /users(.:format)               {:action=>"destroy", :controller=>"devise/registrations"}
        new_user_session GET    /users/sign_in(.:format)       {:action=>"new", :controller=>"my_devise/sessions"}
                         POST   /users/sign_in(.:format)       {:action=>"create", :controller=>"my_devise/sessions"}
    destroy_user_session DELETE /users/sign_out(.:format)      {:action=>"destroy", :controller=>"my_devise/sessions"}
                         POST   /users/password(.:format)      {:action=>"create", :controller=>"devise/passwords"}
                         GET    /users/password/new(.:format)  {:action=>"new", :controller=>"devise/passwords"}
                         GET    /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
                         PUT    /users/password(.:format)      {:action=>"update", :controller=>"devise/passwords"}
                         GET    /users/cancel(.:format)        {:action=>"cancel", :controller=>"my_devise/registrations"}
                         POST   /users(.:format)               {:action=>"create", :controller=>"my_devise/registrations"}
                         GET    /users/sign_up(.:format)       {:action=>"new", :controller=>"my_devise/registrations"}
                         GET    /users/edit(.:format)          {:action=>"edit", :controller=>"my_devise/registrations"}
                         PUT    /users(.:format)               {:action=>"update", :controller=>"my_devise/registrations"}
                         DELETE /users(.:format)               {:action=>"destroy", :controller=>"my_devise/registrations"}
              home_index GET    /home/index(.:format)          {:controller=>"home", :action=>"index"}
                    root        /                              {:controller=>"home", :action=>"index"}
                    root        /                              {:controller=>"home", :action=>"index"}

要回答您的實際問題,這是因為您沒有為此的路線( /contacts注意沒有ID)。 您的路線是/contacts/:id(.:format)格式是可選的,但id不是。 您還需要將ID設置為可選,或創建其他路由。

路線是這樣的

聯系人GET /contacts(.:format){:action =>“列表”,:controller =>“ my_devise / contacts”}

在這里,我們還必須提供格式。 如果我們給聯系人,它將引發路由錯誤。 因此,請同時輸入格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM