我最近的任务是在另一个网站的 iframe 中加载我的 Rails 应用程序的一部分。相关页面应该使用不同的布局文件,但前提是它们在 iframe 内呈现。这里提出了一个解决方案Detect iframe request in a rails app 涉及传递查询字符串参数。
例如,请求网站可以通过 iframe 调用我的应用程序,其 src 为http://foo.com/bar?iframe=true
. 然后在我们的控制器中,我们可以简单地检查:
def bar
render :template => "iframe" if params[:iframe]
end
这似乎是一个很好的解决方案,但遗憾的是,它仅适用于初始请求,因为原始查询字符串是完全静态的。假设我们有指向 iframe 中其他路由的可访问链接,是否有任何方法可以轻松中继iframe=true
请求参数以保持正确的 iframe 布局而无需重复代码?基本上我想在不破坏任何现有功能的情况下尽可能采用 DRYest 方法。我考虑创建另一个 link_to 帮助器,其中包括传递此参数(如果存在)的逻辑,并在整个应用程序中替换我的所有 link_to 调用;我想知道是否有人有更好的方法。