2014-10-11 115 views
0

我是一个rails noob,所以我知道我可能完全错过了这里的东西。我试图通过我的产品控制器将网址传递给iframe。将参数传递给iframe中的iframe无法正常工作

这是我的设置。

产品控制器

def open_url 
     @url = params[:url] 
    end 

index.html.erb

<%= link_to "More Info", open_path(url: "http://www.ceratoboutique.com" + product.destination_url) %> 

open_url.html.erb

<iframe src= "<%= @url %>" style="border: 0; position:fixed; top:0; left:0; right:0; bottom:0; width:100%; height:100%" /> 

的routes.rb

get '/open' => 'products#open_url', via: 'get' 

我,已经检查了这两个问题

Rails 4 - Passing Params via link_to?

Opening a Link in a New Window within an iFrame

但我还是输了,URL传递到浏览器,但它似乎并没有传递到@url变量在我的控制器中。

调试转储

红宝石/哈希:ActionController的::参数

网址:http://www.ceratoboutique.com/collections/tops/products/combo-blouse

控制器:产品

行动:open_url

+0

你是如何检查是否设置了@url? – 2014-10-11 12:39:36

+0

我已经为open_url页面添加了调试转储。 – Keon 2014-10-11 16:57:21

+0

@url设置为零,虽然网址正在通过 – Keon 2014-10-11 17:17:54

回答

0

我决定坚持铁路conv使其成为一个宁静的链接。我仍然不知道为什么原始实现不起作用,但它在控制器中使用show方法。

控制器

def show 
    @url = Product.find(params[:id]) 
end 

index.html.erb

<%= link_to "More Info", product_path(product) %> 

show.html.erb

<iframe src= "<%= "http://www.ceratoboutique.com" + @product.destination_url %>" style="border: 0; position:fixed; top:0; left:0; right:0; bottom:0; width:100%; height:100%" /> 

****编辑添加更多信息的,包括I帧* ***

我碰到很多o f试图让我的iframe在chrome和Heroku中工作,所以我结合了这个过程,如果有人需要它。我首先部署到Heroku,并在我的网站上运行完整的SSL,然后意识到iframe不适用于未运行SSL的站点。我将配置强制SSL重新部署为false,但是heroku仍然强制我的应用程序使用SSL。我意识到config.force_ssl = true会启用严格传输安全性标头(HSTS),其最大年龄为一年,所以我必须使用以下方式使HSTS失效。

在应用控制器

class ApplicationController < ActionController::Base 
    before_filter :expire_hsts 

    def expire_hsts 
    response.headers["Strict-Transport-Security"] = 'max-age=0' 
    end 

过期SSL在Production.rb

config.force_ssl = false 

然后,以确保在X框在Chrome浏览器,显示我添加以下内容。

在Chrome中启用

config.action_dispatch.default_headers = { 'X-Frame-Options' => 'ALLOWALL' } 

您可能需要运行您的部分网页,可以比较容易地实现通过下面链接的SSL执法宝石的SSL X形框架。

SSL的实施者宝石

https://github.com/tobmatth/rack-ssl-enforcer

上航行的丑陋是的IFRAME祝您好运!