2014-10-29 78 views
4

这可能是一个非常简单的问题,但我无法弄清楚如何呈现嵌入式推文。Oembed tweet - twitter gem

为简单起见,这是我的控制器:

class TweetsController < ApplicationController 

    def index 

    @tweet = twitter_client.oembed('527501479142109184') 

    end 

end 

并在视图,如果我只是做了只显示对象如下:

<%= @tweet %> 

#<Twitter::OEmbed:0x007fb878abc5d8>

在检查这给出:

#<Twitter::OEmbed:0x007fb875cacd28 @attrs={:cache_age=>"3153600000", :url=>"https://twitter.com/HuayuanSong/statuses/527501479142109184", :height=>nil, :provider_url=>"https://twitter.com", :provider_name=>"Twitter", :author_name=>"Huayuan Song", :version=>"1.0", :author_url=>"https://twitter.com/HuayuanSong", :type=>"rich", :html=>"<blockquote class=\"twitter-tweet\"><p>Jeg kunne lide en video på <a href=\"https://twitter.com/YouTube\">@YouTube</a> <a href=\"http://t.co/hhhTvyJA6y\">http://t.co/hhhTvyJA6y</a> Obama: U.S. leading the way against Ebola spread</p>&mdash; Huayuan Song (@HuayuanSong) <a href=\"https://twitter.com/HuayuanSong/status/527501479142109184\">October 29, 2014</a></blockquote>\n<script async src=\"//platform.twitter.com/widgets.js\" charset=\"utf-8\"></script>", :width=>550}> 

显然,这非常简单,我只是用这个概念证明类型的东西。有人可以解释我如何从具有对象到能够显示实际的嵌入式推文?

感谢

回答

6

简单地调用@tweet将只是参考的对象。为了显示鸣叫,你会想打电话:

<%= raw(@tweet.html) %> 

此外,从Twitter的documentation

返回的HTML片段将被自动识别为 嵌入Tweet当Twitter’s widget JavaScript is included上 页面。

JavaScript代码段看起来是这样的:

<script> 
window.twttr = (function (d, s, id) { 
var t, js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) return; 
js = d.createElement(s); js.id = id; 
js.src= "https://platform.twitter.com/widgets.js"; 
fjs.parentNode.insertBefore(js, fjs); 
return window.twttr || (t = { _e: [], ready: function (f) { t._e.push(f) } }); 
}(document, "script", "twitter-wjs")); 
</script> 
+0

十分感谢,这是有道理的,傻乎乎地错过。但是,现在所有显示的都是html?我在我的'application.html.erb'模板中包含的widget.js脚本在结束之前''标签 – Robbo 2014-10-29 18:01:50

+0

尝试使用[原始帮手方法](http://apidock.com/rails/ActionView/Helpers/RawOutputHelper/raw):'<%= raw(@ tweet.html)%>' – 2014-10-29 18:08:06

+0

亲爱的,谢谢! – Robbo 2014-10-29 18:08:53