Ruby on rails rails中的映射操作
在我的routs.rb中,我有以下几行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,
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希望控制器名为输血控制器
,因此这是一个连锁反应