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 回答