【问题标题】:Twitter integration rails 4 appTwitter 集成 rails 4 应用程序
【发布时间】:2013-10-04 03:02:15
【问题描述】:

我正在尝试使用 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 %>

是否还有其他步骤可以公开客户端变量,或者我没有正确初始化它?

【问题讨论】:

    标签: ruby-on-rails ruby twitter ruby-on-rails-4 initializer


    【解决方案1】:

    当您在启动文件中将客户端设置为 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 %>
    

    注意@符号。

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

    【讨论】:

    • 这行得通——但是你有没有想过如何让它在控制器中没有这个配置的地方工作?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-23
    • 2011-11-03
    • 2011-09-03
    • 2012-02-04
    • 1970-01-01
    相关资源
    最近更新 更多