将参数传递给导轨中的iframe无法正常工作

时间:2014-10-11 05:20:57

标签: ruby-on-rails

我是一个铁杆菜鸟,所以我知道我可能完全错过了这里的东西。我试图通过我的产品控制器将网址传递给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变量。

调试转储

  !

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

     

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

     

控制器:产品

     

动作:open_url

1 个答案:

答案 0 :(得分:0)

我决定坚持使用rails约定并使其成为一个宁静的链接。我仍然不知道为什么原始实现不起作用,但它使用控制器中的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-Frame ****

的信息

我遇到了很多问题,试图让我的iframe在chrome和Heroku上工作,所以如果有人需要它,我会把这个过程结合起来。我首先使用在我的网站上运行的完整SSL部署到Heroku,然后意识到iframe在没有运行SSL的网站的chrome中不起作用。我将强制SSL重新部署为false,但heroku仍然强制我的应用程序使用SSL。我意识到config.force_ssl = true启用了最大年龄为一年的严格传输安全头(HSTS),所以我不得不使用以下内容使HSTS到期。

在应用程序控制器中使SSL过期

class ApplicationController < ActionController::Base
  before_filter :expire_hsts

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

在Production.rb

config.force_ssl = false 

然后为确保在Chrome浏览器中显示x框架,我添加了以下内容。

启用chrome中的x-frame

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

您可能希望在某些页面上运行SSL,这可以通过下面链接的SSL enforcer gem轻松完成。

ssl-enforcer gem

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

祝你在iFrame的丑陋中导航!