Rails 5从远程URL加载HTML

问题描述:

在服务器端使用Rails 5,因此无需使用Ajax/jQuery,也无需使用iFrames,我可以将HTML从远程域加载到视图中吗?Rails 5从远程URL加载HTML

例如,在我看来home.html.erb我愿做类似的东西:

<div id="remote_content"> 
    <%= render "https://www.example.com/index.html" %> 
</div> 

我知道我可以使用Ajax对于这一点,但因为它是远程域,我得到进入跨域问题。

+0

什么''

+0

我已经更新了“不使用iframe”的问题 – Ryan

更新 这里是我工作。感谢@ court3ney建议将ajax用于我自己的控制器,然后在控制器中使用http库。我决定使用HTTParty。

CoffeeScript的

user_id = $('#user_id').text() 
$("#widget").load('/users/' + user_id + '/widget') 

控制器

def show 
    ... 
end 

def widget 
    @user = User.find(params[:id])  
    @widget = HTTParty.get('https://www.example.com/[email protected]', timeout: 10) 
    render :layout => 'blank' 
end 

显示视图

... 
<div id="widget"></div> 
... 

小工具中查看

<%= raw(@widget) %> 

路线

get 'users/:id/widget' => 'users#widget' 
+1

这会在您的网页加载时冻结网页,并在网站停止运作时破坏网站,因此我建议您做一些事情;使用一个带有超时的http库,并且在你用ajax调用的新控制器动作中放入那个'open'行。那么你的网页总是加载! – court3nay

+0

感谢您在我自己的控制器上使用Ajax的建议。这应该解决跨域问题。任何关于更好的http库的建议? – Ryan

+0

这样的东西 – court3nay

使用iframe:

<iframe src="https://www.example.com/index.html"></iframe> 

w3c docs on iframes

+0

由于iframe的限制,我希望不使用iframe,而是直接通过服务器端的Rails将收到的html注入到页面中。 – Ryan