0

我正在尝试使用这个gem将 twitter 提要集成到我的 Rails 4 应用程序中。

我已经阅读了 github 页面上的文档,但是在尝试使用我认为的方法时遇到了问题。

twitter_init.rb我在一个名为(带有我的身份验证信息)的初始化程序文件中有以下内容:

client = Twitter::Streaming::Client.new do |config|
  config.consumer_key        = "YOUR_CONSUMER_KEY"
  config.consumer_secret     = "YOUR_CONSUMER_SECRET"
  config.access_token        = "YOUR_ACCESS_TOKEN"
  config.access_token_secret = "YOUR_ACCESS_SECRET"
end

在我的视图中尝试使用以下代码时,我收到错误undefined local variable or method 'client' for class#<#<class...>:...>

<% client.sample do |tweet| %>
   <%= tweet.text %>
 <% end %>

是否有另一个步骤来公开客户端变量,或者我没有正确初始化它?

4

1 回答 1

3

当您在启动文件中将客户端设置为 Twitter::Streaming::Client.new 时,您创建了一个局部变量。此变量失去了作用域,并且在您进入视图时早已消失。

要使其正常工作,请删除 twitter_init.rb

然后在正在执行的控制器动作中

@client = Twitter::Streaming::Client.new do |config|
  config.consumer_key        = "YOUR_CONSUMER_KEY"
  config.consumer_secret     = "YOUR_CONSUMER_SECRET"
  config.access_token        = "YOUR_ACCESS_TOKEN"
  config.access_token_secret = "YOUR_ACCESS_SECRET"
end

然后在视图中

<% @client.sample do |tweet| %>
  <%= tweet.text %>
<% end %>

注意@ 符号。

然而,这确实违反了瘦控制器厚模型约定,应该在其他地方初始化,比如在服务中。

于 2013-09-28T03:26:45.813 回答