Rails - 缺少路由助手前缀

时间:2016-04-13 21:17:12

标签: ruby-on-rails ruby routes

我错过了联系人#show prefix'contact',如下所示。

rake routes

               contacts GET    /contacts(.:format)                     contacts#index
                        POST   /contacts(.:format)                     contacts#create
            new_contact GET    /contacts/new(.:format)                 contacts#new
           edit_contact GET    /contacts/:id/edit(.:format)            contacts#edit
                        GET    /contacts/:id(.:format)                 contacts#show
                        PATCH  /contacts/:id(.:format)                 contacts#update
                        PUT    /contacts/:id(.:format)                 contacts#update
                        DELETE /contacts/:id(.:format)                 contacts#destroy

我认为这就是我点击以下链接时获得点而不是斜线的原因。

_contact.html.erb

<%= link_to "delete contact", contact, method: :delete,
                                    data: { confirm: "You sure?" } %>

服务器记录正确的DELETE请求,但是,无法呈现/contact.26而不是正确的/ contacts / 26。

Started DELETE "/contact.26" for 128.177.12.30 at 2016-04-13 21:04:30 +0000

ActionController::RoutingError (No route matches [DELETE] "/contact.26"):

每个帖子我都遇到过一个点而不是一个斜线似乎源于复数错误,但是,我不相信这是这种情况。

此外,我已删除资源:来自我的路线文件的联系人,运行$ rake路线,添加资源:联系人,运行$ rake路线,问题仍然存在。

此问题似乎是联系人模型所特有的,因为我的其他模型在删除时没有遗漏任何前缀或出现此错误。

如何将“联系人”前缀添加回“contacts#show”?

routes.rb文件供参考:

Rails.application.routes.draw do
  root 'static_pages#home'
  get 'help' => 'static_pages#help'
  get 'about' => 'static_pages#about'
  get 'contact' => 'static_pages#contact'
  get 'signup' => 'users#new'
  get 'login' => 'sessions#new'
  get 'newevent' => 'events#new'
  get 'newteam' => 'teams#new'
  get 'newperformance' => 'performances#new'
  get 'newhotel' => 'hotels#new'
  get 'newcontact' => 'contacts#new'
  get 'newflight' => 'flights#new'
  get 'newground' => 'grounds#new'
  get 'newguest' => 'guests#new'
  post 'login' => 'sessions#create'
  delete 'logout' => 'sessions#destroy'
  resources :users
  resources :events
  resources :teams do
    member do
      get :events
    end
  end
  resources :performances
  resources :hotels
  resources :contacts
  resources :flights
  resources :grounds
  resources :guests
  resources :account_activations, only: [:edit]
  resources :password_resets, only: [:new, :create, :edit, :update]
end

3 个答案:

答案 0 :(得分:0)

您可能在

设置的路线之间发生冲突
 resources :contacts

get 'contact' => 'static_pages#contact'

最简单的解决方案可能是更改静态页面的链接。如果可以,最好将资源保持在一起。

答案 1 :(得分:0)

我刚遇到同样的错误。

我的问题的解决方法是资源的末尾

我有'资源',并且遇到了和你一样的问题。

我将其更改为“资源”并解决了我的问题

在我的案例中,只是一个错字。

答案 2 :(得分:0)

昨天出现了这个错误。修复它的是删除未使用的帮助文件。可能值得一试。