0

我的信息来源是这里的第 2.9 节:

[http://guides.rubyonrails.org/routing.html#connecting-urls-to-code][1]

我想要做的是添加一个自定义操作“搜索”和相应的视图。

所以,正如它在文档中所说的那样,我在我的 config/routes.rb 文件中添加了这段代码:

  resources :dimensions do
  collection do
    get "search"
  end
  end

我还在 dimensions_controller 文件中定义:

  def search
    @dimensions = Dimension.all

    respond_to do |format|
      format.html # search.html.erb
      format.json { render json: @dimensions }
    end
  end

然后我停止并重新启动了 rails 服务器,但是当我导航到 /dimensions/home 时,我仍然收到以下错误消息:

Couldn't find Dimension with id=search

还表明我的参数是:

{"id"=>"search"}

那么我是否只是错过了另一段代码,它给出了将 /dimension/search 解释为集合操作而不是显示操作的指令?

我已经确认 search_dimensions_path 存在,所以我知道 routes.rb 文件中的资源块实际上是在添加路径。它只是将它们解释为给我带来麻烦的单独搜索操作。

谢谢你的时间。

4

2 回答 2

0

发现问题:

创建收集操作,我必须在我的 config/routes.db 文件中为维度创建资源声明,如下所示:

  resources :dimensions do
  collection do
    get "search"
  end
  end

  resources :dimensions

然后一切都按预期工作。

于 2012-12-09T15:04:13.720 回答
0

这段代码应该可以正常工作。你能告诉我们你的routes.rb文件吗?

附带说明一下,您可能不希望有单独的搜索操作,使用该index操作是首选方式。

于 2012-12-09T05:49:39.460 回答