Ruby on rails rails中的映射操作

Ruby on rails rails中的映射操作,ruby-on-rails,routing,Ruby On Rails,Routing,在我的routs.rb中,我有以下几行 CyberTrackRails3::Application.routes.draw do scope "(:locale)", :locale => /en|de|nl/ do resources :transfusion do get 'detail', :on => :collection end end end 下一行 url_for( :controller => :transfusion,

在我的routs.rb中,我有以下几行

CyberTrackRails3::Application.routes.draw do
  scope "(:locale)", :locale => /en|de|nl/ do
    resources :transfusion do
      get 'detail', :on => :collection
    end
  end
end
下一行

url_for( :controller => :transfusion, :action => :detail, 
            :id => bloodselection[:id] 
映射到/nl/transmission/detail?id=162106


如何将其映射到/nl/transmission/162106,以便控制器将其理解为id为162106?

这是因为您正在设置集合的详细操作,为了遵循url结构,需要在成员上定义它


发生这种情况是因为您正在对集合设置详细操作,为了遵循url结构,需要在成员上定义它


Rails路由引擎默认情况下会对集合进行多重化,因此如果您希望默认值能够立即生效,则应使用复数,
transfusions

然后,您可以使用
输液路径
获取
/nl/transfusions/12345

如果坚持在URL中使用单数形式,则可以将路径段覆盖为

resources :transfusions, path: "transfusion" do …

这将使您获得
/nl/transmission/12345

Rails路由引擎默认情况下对集合进行多重化,因此,如果您希望默认值能够立即生效,则应使用复数,
transmisions

然后,您可以使用
输液路径
获取
/nl/transfusions/12345

如果坚持在URL中使用单数形式,则可以将路径段覆盖为

resources :transfusions, path: "transfusion" do …

这样你就可以得到
/nl/transmission/12345

我想我刚刚找到了。使用:member而不是:collection。我想我刚刚找到了它。使用:member而不是:collection.rb要使默认值生效,routes.rb应该是什么样子?例如,我想使用你的路径。顺便说一句,detail不是唯一的操作,所以它应该是detail\u path。它实际上取决于控制器类的名称。如果名为
TransfusionController
,那么使用
资源:transfusion
应该可以工作,但是如果您有一个名为
transfusion
的模型,rails希望控制器名为
TransfusionController
,因此这是一个链式反应,要使默认值工作,routes.rb应该是什么样子的?例如,我想使用你的路径。顺便说一句,detail不是唯一的操作,所以它应该是detail\u path。它实际上取决于控制器类的名称。如果名为
输血控制器
,那么使用
资源:输血
应该可以工作,但是如果您有一个名为
输血
的模型,rails希望控制器名为
输血控制器
,因此这是一个连锁反应