0

我正在重写我 5 年前使用 rails 1.something 完成的 Rails 应用程序。当我尝试浏览 localhost/companies/search_updates/ 时出现此错误...我知道这是一个路由错误,因为当我从 router.rb 中删除资源 :companies 时,一切正常...如何解决?我是否需要为我创建的每个操作手动添加路由?

当我尝试访问 localhost/companies/search_updates/ 时出错

The action 'show' could not be found for CompaniesController

控制器

class CompaniesController < ApplicationController
  def index
    @companies = Company.all
  end
  def search_updates
    # Execute code to search for updates
    # Redirect to results
  end
end

路线

resources :accounts
resources :companies
get 'companies/search_updates' =>   'companies#search_updates'

search_updates.html.erb

Hello Updates!
4

1 回答 1

0

The action 'show' could not be found for CompaniesController

Rails 路由按照指定的顺序进行匹配,因此如果您在 get 'companies/search_updates' 上方有一个资源 :companies,则资源行的 show 操作路由将在 get 行之前匹配。要解决此问题,请将 get 行移到资源行上方,以便首先匹配。

resources :accounts
get 'companies/search_updates' =>   'companies#search_updates'
resources :companies

资源路由允许您快速声明给定资源控制器的所有公共路由。资源丰富的路由不是为您的索引、显示、新建、编辑、创建、更新和销毁操作声明单独的路由,而是在一行代码中声明它们。

如果您的控制器上只有索引方法(默认 CURD 导轨),您可以为其指定路由。

resources :accounts
get 'companies/search_updates' =>   'companies#search_updates'
resources :companies, :only => [index]
于 2013-08-10T01:41:40.950 回答