添加RESTful动作

时间:2012-12-09 04:50:24

标签: ruby-on-rails routes

我的信息来源是第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"}

所以我只是错过了另一段代码,它将指令解释/维度/搜索作为集合操作而不是show动作?

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

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

此代码应该可以正常工作。你能告诉我们你的routes.rb档吗?

在旁注中,您可能不希望单独执行搜索操作,使用index操作是首选方式。

答案 1 :(得分:0)

发现问题:

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

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

  resources :dimensions

然后一切都按预期工作。