我有一个范围路线:
scope :path => ":db", :defaults => {:db => "default"} do
resources :boxes
end
生成
boxes GET /:db/boxes(.:format) {:db=>"default", :action=>"index", :controller=>"boxes"}
POST /:db/boxes(.:format) {:db=>"default", :action=>"create", :controller=>"boxes"}
new_box GET /:db/boxes/new(.:format) {:db=>"default", :action=>"new", :controller=>"boxes"}
edit_box GET /:db/boxes/:id/edit(.:format) {:db=>"default", :action=>"edit", :controller=>"boxes"}
box GET /:db/boxes/:id(.:format) {:db=>"default", :action=>"show", :controller=>"boxes"}
PUT /:db/boxes/:id(.:format) {:db=>"default", :action=>"update", :controller=>"boxes"}
DELETE /:db/boxes/:id(.:format) {:db=>"default", :action=>"destroy", :controller=>"boxes"}
我希望能够调用boxes_url(例如),并推断出应该从当前请求中推断出:db的值。
示例:
请求“/ lax / boxes”。在模板中,我调用box_url(@box),它会生成url“/ lax / boxes / 1”(其中@ box.id = 1)。
我目前看到的唯一解决方案是始终在url中包含params [:db],调用box_url(params [:db],@ box)。
有没有人知道我所描述的行为?
答案 0 :(得分:0)
这(在帮助文件中)应该有效:
def box_url(box)
super(params[:db], box)
end
不幸的是,您必须为要覆盖的每个网址/路径重复此操作。