hol*_*den 37 routes ruby-on-rails singular custom-routes ruby-on-rails-3
我有一个搜索路线,我想做出单数,但当我指定一个单一的路线,它仍然制作多个控制器路线,这是它应该如何?
resource :search
Run Code Online (Sandbox Code Playgroud)
给我
search POST /search(.:format) {:action=>"create", :controller=>"searches"}
new_search GET /search/new(.:format) {:action=>"new", :controller=>"searches"}
edit_search GET /search/edit(.:format) {:action=>"edit", :controller=>"searches"}
GET /search(.:format) {:action=>"show", :controller=>"searches"}
PUT /search(.:format) {:action=>"update", :controller=>"searches"}
DELETE /search(.:format) {:action=>"destroy", :controller=>"searches"}
Run Code Online (Sandbox Code Playgroud)
多个控制器"搜索"
我只有一条路线......创建一个搜索:
所以我做了: match "search" => "search#create"
如果我仍然想让控制器复数,我只是想知道未来?Rails 3.0.9
M. *_*her 34
是的,这应该是这样的.从路由Rails指南引用:
因为您可能希望对单个路径(/ account)和复数路径(/ accounts/45)使用相同的控制器,所以单个资源映射到多个控制器.
http://edgeguides.rubyonrails.org/routing.html#singular-resources
Yul*_*ule 23
你可以通过在config/initializers/inflections.rb中将"search"的复数设置为不可数来解决这个问题
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( search )
end
Run Code Online (Sandbox Code Playgroud)
现在应该只允许使用搜索
您是否只想为创建生成一条路线?
如果是这样:
resource :search, :only => :create
Run Code Online (Sandbox Code Playgroud)
REST资源的控制器名为searching_controller的事实是一个约定(您可以通过在路由中强制控制器的名称来更改resource :search, :only => :create, :controller => :search,但它不值得......).
搜索真的是一种资源吗?如果是,那么你创建的是具有"搜索"类型的模型的实例,在这种情况下,多个控制器"搜索"是完全有意义的.
但是,如果它是一个没有多个模型的控制器,那么可能不是.在这种情况下,您不需要定义路径,resource :search只需用它get 'search/create'来告诉路由器回答"搜索/创建"到"搜索"控制器中的"创建"操作.
| 归档时间: |
|
| 查看次数: |
21929 次 |
| 最近记录: |