Интеграция с твиттером 4 приложения

Я пытаюсь интегрировать канал 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 %>

Есть ли еще один шаг к раскрытию клиентской переменной или, может быть, я неправильно ее инициализировал?

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

Обратите внимание на символы @.

Это, однако, нарушает соглашение о толстой модели тощего контроллера и должно быть инициализировано в другом месте, как в сервисе.

Другие вопросы по тегам