【问题标题】:Rails - Adding a command line script to my appRails - 向我的应用程序添加命令行脚本
【发布时间】:2014-04-06 22:42:57
【问题描述】:

我不喜欢问菜鸟问题,但我花的时间比我愿意承认谷歌搜索和试图弄清楚这个简单的过程要多。我正在尝试使用 twitter gem 在我的应用视图中发布推文。

我有这个脚本,当我在命令行上运行它时,它可以工作,但我不知道如何访问我的视图中的数据。我已经安装了宝石。我尝试将此代码添加到我的控制器,但它仍然不允许我在视图中调用它。

require 'rubygems'
require 'twitter'

client = Twitter::REST::Client.new do |config|
  config.consumer_key        = "(redacted)"
  config.consumer_secret     = "(redacted)"
  config.access_token        = "(redacted)"
  config.access_token_secret = "(redacted)"
end

client.search("help", :result_type => "recent").take(3).each do |tweet|
  puts tweet.text

end

如果有人能指出我正确的方向,那就太好了。

【问题讨论】:

  • 在应用的视图中发布推文?听起来是个可怕的想法。你为什么想这么做? View 应该只生成输出来呈现给用户,没有别的。你能解释一下你想做什么吗?您希望何时在 Twitter 上发帖、页面加载时或用户执行特定操作时?
  • 我是一个初学者,我只是想练习使用 Rails 和 API。你能解释一下为什么这是一个可怕的想法吗?
  • 我已经做到了:“视图应该只生成输出来呈现给用户,没有别的”。 Rails 建立在MVC philosophy 之上,关注点分离是主要的……错误……关注点。您不会从与用户直接交互之外的视图执行任何操作。
  • 嗯,我刚刚阅读了 MichaelA 的回答,然后重新阅读了您的问题。如果你想获取并显示推文而不是发布你写的,这就是模式:你在你的模型或控制器中准备东西(我会投票把它在非数据库绑定模型中,但是 meh),然后将其传递给视图以显示。

标签: ruby-on-rails api twitter


【解决方案1】:

好吧,我将发布一些(未经测试的)代码,这些代码可能会帮助您朝着正确的方向前进。这不是最好的方法,因为它不是很灵活,但它应该做你的例子所做的事情。确保将 Twitter gem 添加到您的 Gemfile 和捆绑安装中。创建一个名为 TweetsFromAccount 的 Ruby 类。将其保存在 /lib 目录中就可以了。

class TweetsFromAccount

  def initialize
    @client = Twitter::REST::Client.new do |config|
      config.consumer_key        = "(redacted)"
      config.consumer_secret     = "(redacted)"
      config.access_token        = "(redacted)"
      config.access_token_secret = "(redacted)"
    end
  end

  def recent_tweets(quantity)
    array_of_tweets = []

    @client.search("help", :result_type => "recent").take(quantity).each do |tweet|
      array_of_tweets << tweet.text
    end
  end

end

在控制器中,创建一个新的 TweetsFromAccount 对象并将其分配给实例变量@tweets。创建一个额外的实例变量设置@tweets.recent_tweets(3) 的值。这应该会获取最近的 3 条推文。

def show
  # other stuff

  @tweets = TweetsFromAccount.new
  @array_of_tweets = @tweets.recent_tweets(3)
end

那么在您看来,只需遍历 @array_of_tweets。

<ul>
  <% @array_of_tweets.each do |tweet| %>
    <li><%= tweet %></li>
  <% end %>
</ul>

【讨论】:

    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 2011-11-05
    • 2012-11-27
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多