rails奇异资源还是复数吗?

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

  • 你可以做`resource:search,:controller =>:search`. (45认同)

Yul*_*ule 23

你可以通过在config/initializers/inflections.rb中将"search"的复数设置为不可数来解决这个问题

ActiveSupport::Inflector.inflections do |inflect|
   inflect.uncountable %w( search )
end
Run Code Online (Sandbox Code Playgroud)

现在应该只允许使用搜索

  • 这样做的问题是,如果您在其他地方使用被覆盖的单词,它将不再被正确地复数化。 (2认同)

And*_*tti 6

您是否只想为创建生成一条路线?

如果是这样:

resource :search, :only => :create
Run Code Online (Sandbox Code Playgroud)

REST资源的控制器名为searching_controller的事实是一个约定(您可以通过在路由中强制控制器的名称来更改resource :search, :only => :create, :controller => :search,但它不值得......).


Mat*_*lly 5

搜索真的是一种资源吗?如果是,那么你创建的是具有"搜索"类型的模型的实例,在这种情况下,多个控制器"搜索"是完全有意义的.

但是,如果它是一个没有多个模型的控制器,那么可能不是.在这种情况下,您不需要定义路径,resource :search只需用它get 'search/create'来告诉路由器回答"搜索/创建"到"搜索"控制器中的"创建"操作.