1

Rails 2 から Rails 3 へのルーティングの変換について少し助けが必要です。

app/views/layouts/application.html.erb、私は持っています:

<%= link_to "Reports", reports_path %><br>

があり、ReportsControllerには、次のapp/views/reports/index.html.erbものがあります。

<%= link_to "Clients With Animals", :action => "getAnimals", :controller => "clients" %>

次に、config/routes.rb に、これがあります (Rails 3)

match '/reports' => "reports#index"
match '/clients/getAnimals', to: "clients#getAnimals"

レポート ページで「getAnimals」リンクをクリックすると、次のエラーが表示されます。

ActiveRecord::RecordNotFound in ClientsController#show
Couldn't find Client with id=getAnimals

「getAnimals」を ID にするのではなく、アクションにしたいのです。

それ、どうやったら出来るの?

4

1 に答える 1

2

resources :clientsエントリもあると仮定すると、match '/clients/getAnimals', to: "clients#getAnimals"その上にあることを確認する必要があります (Rails は最初にヒットしたものに一致します)。

ただし、より良い方法は、リソースに配置することです。

resources :clients do
  get 'getAnimals', :on => :collection
end
于 2012-05-07T14:26:54.140 に答える