我的信息来源是第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文件中的资源块实际上是添加路径。它只是将它们解释为一个单独的搜索动作,这给我带来了麻烦。
感谢您的时间。
答案 0 :(得分:0)
此代码应该可以正常工作。你能告诉我们你的routes.rb
档吗?
在旁注中,您可能不希望单独执行搜索操作,使用index
操作是首选方式。
答案 1 :(得分:0)
发现问题:
在创建集合操作之后,我必须在config / routes.db文件中为维创建资源声明,如下所示:
resources :dimensions do
collection do
get "search"
end
end
resources :dimensions
然后一切都按预期工作。