Интеграция с твиттером 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 %>
Обратите внимание на символы @.
Это, однако, нарушает соглашение о толстой модели тощего контроллера и должно быть инициализировано в другом месте, как в сервисе.