Oembed推文 - 推特宝石库

4

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

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

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}>

显然,这非常简单,我只是在使用这个作为概念验证。有人可以解释一下我如何从拥有这个对象到能够显示实际的嵌入式推文吗?
谢谢
1个回答

6

仅仅调用@tweet只是引用对象。为了显示推文,您需要调用:

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

另外,来自Twitter的文档

当页面中包含Twitter小部件JavaScript时,返回的HTML片段将自动被识别为嵌入式推文。

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>

非常感谢,这很有道理。错过那个真是太傻了。但是,现在显示的全部都是HTML?我已经在我的application.html.erb模板中,在闭合的</body>标签之前包含了widget.js脚本。 - Robbo
尝试使用raw helper方法<%= raw(@tweet.html) %> - Joel Brewer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接