0

Rails 1.somethingを使用して、5年ほど前に行ったRailsアプリを書き直しています。localhost/companies/search_updates/ をブラウズしようとすると、このエラーが発生します... リソース :companies を router.rb から削除すると問題なく動作するため、これがルーティング エラーであることはわかっています... どうすれば修正できますか? また、作成するアクションごとにルートを手動で追加する必要がありますか?

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' の上に resources :companies がある場合、resources 行の show アクションのルートは get 行の前に照合されます。これを修正するには、最初に一致するように get 行を resources 行の上に移動します。

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

リソース ルーティングを使用すると、リソースの豊富な特定のコントローラーのすべての共通ルートをすばやく宣言できます。index、show、new、edit、create、update、destroy の各アクションに対して別々のルートを宣言する代わりに、リソースフル ルートはそれらを 1 行のコードで宣言します。

コントローラーに index メソッド (デフォルトの CURD レール) しかない場合は、特定のルートを指定できます。

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