前提・実現したいこと
Railsのコントローラー上で、.envのファイルに設定した環境変数を読み込んでAPIを取得したい。
質問内容
Ruby-on-RailsでSNSのアプリケーションを作成しております。
NewsApiを使用し、News情報を取得し表示する機能を実装中にAPIKEYを.envファイルにて
環境変数に置き換えて使用したいのですが、エラーが発生して読み込めません。
お手数ですが、ご指導ご鞭撻のほど、よろしくお願いいたします。
環境
Ruby 2.6.6
Rails 6.0.3.4
実装で参考にした記事
https://qiita.com/UTOG/items/f6438420e81b6488a508
https://laptrinhx.com/rails-newsapiwo-shittekurisumasunyusuwo-shou-jisuruapuriwo-zuoru-4288957525/
以上を参考にNewsApiへ登録し、APIKEYを取得し環境変数として設定。
gemのdotenv-railsインストール済
エラーメッセージ
syntax error, unexpected tCONSTANT, expecting ')' ...ze=15&apiKey=<%="#{ENV['API_KEY']}"%>') ... ^~~~~~~ /app/controllers/news_controller.rb:6: syntax error, unexpected ')', expecting end ...iKey=<%="#{ENV['API_KEY']}"%>')
該当のソースコード
news_Controller.rb
class NewsController < ApplicationController def index end def data uri = URI.parse('http://newsapi.org/v2/top-headlines?country=jp&category=business&pageSize=15&apiKey=<%="#{ENV['API_KEY']}"%>') json = Net::HTTP.get(uri) moments = JSON.parse(json) @data = moments['articles'].to_json end end
index.html.haml
index.html.haml
1.container 2 %h2 Business News 3 = link_to 'Powered by News API', 'https://newsapi.org' 4 %hr/ 5 #result no information... 6 :javascript 7 var f = function(){ 8 $.ajax({ 9 type: 'GET', 10 url: '/news/data' 11 }); 12 }; 13 f(); 14
data.js.erb
var data = <%== @data %>; var result = '<div class="datas">' data.forEach(function(e){ var div = '<div class="data">' if (e.urlToImage != null) { result += '<img src="' + e.urlToImage +'" class="image_data">'; } result += '<a href="' + e.url +'" class="yahoo_link" target="_blank">' + e.title + '</a><br>'; result += '<p class="time_data">' + e.publishedAt + '</p><hr class="clear">'; div += '</div>' }); result += '</div>' $('#result').html(result);
.env
API_KEY='この中に取得したAPI_KEYを入力'
試したこと
他の方の解決方法などを検索し、コントローラー6行目のURIの末尾周辺コードをapiKey=<%="#{ENV['API_KEY']}"%>、apiKey=<%=ENV['API_KEY']%>、apiKey=ENV['API_KEY']など色々変更して試してみるものの環境変数を読み込めませんでした。
apiKeyの末尾に取得したAPIKEYを直接入力した場合は、問題なくニュースデータを読み込むことができ、コンソール上で
ENV['API_KEY']を実行した場合も環境変数はきちんと出力されておりました。
下記、画像の通り、6行目のuriのapiKey=以降にアンダーラインが引かれていないのが気になっておりますが、解決できませんでした。
お手数ですが、ご確認のほどよろしくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/03/21 06:57