我正在开发 Rails 应用程序,我想使用 ActiveResource 将请求发送到 REST 服务器。服务器的实际 URL 站点是:
http://foo.com/api-v1.0
关键是,对于与服务器的每次通信,我都想在 Rails 应用程序上下文中传递当前语言环境。所以有效的 URL 调用是:
ETC
因此,我正在关注较差的 ActiveResource 文档,并按如下方式定义我的资源类:
class MyClass < ActiveResource::Base
self.site = "http://foo.com/api-v1.0/:locale
end
然后在我的应用程序控制器上,我有这样的事情,例如当让所有人:
MyClass.all(:params => {:locale => I18n.locale})
这工作正常。
问题是控制器代码变得非常冗长。我必须反复传递:params => {:locale => I18n.locale}
我正在访问的每一个资源。
为了避免这种情况,我决定有一个派生自 ActiveResource::Base 的基类,并以这样的方式覆盖所有资源访问方法,以便我可以设置 :locale。所以代码变成了:
class MyBaseClass < ActiveResource::Base
self.site = "http://foo.com/api-v1.0/:locale"
def self.all
super(:params => {:locale => I18n.locale})
end
end
class MyClass < MyBaseClass
end
在我的应用程序控制器中:
MyClass.all
足够的。
但是,这会给MyBaseClass
. 我必须重写所有方法ActiveResource::Base
来传递 this :locale
。
任何线索我怎样才能更有效地做到这一点?
提前致谢
帕纳约蒂斯