前提・実現したいこと
フォームにURLを入力 > ボタンを押す > タイトルを取得 > フォームに自動入力
という機能を作ろうとしています。
発生している問題・エラーメッセージ
コントローラ内に新しいメソッドを作って、
そこに向かってURL情報を送り、スクレイピングでタイトルを取得するところまで上手くいっているのはbinding.pryで変数をみて確認しています。
そこからインスタンス変数に入れた変数を
jqueryに戻して、ひとまずalert表示したいと考えているのですが、
そのさきのjs.erbファイルが動きません。
単純なalert('aaa');という文も動かないので何か問題があるのだと思います。
chrome拡張機能のRailsタブにて確認したところ、
狙ったjsファイルがrenderingはされているように思えます。
何か、ヒントや先への進み方、問題点がわかればご指摘お願いします。
該当のソースコード
以下のインプットフォームにURLを入力、
#novel-infoボタンを押すとajaxが動きます。
haml
1//---show.html.haml--- 2.button.btn.btn-primary#novel-info 3 button 4%input#novel-url
ここでajaxにて、
matomes_controllerのscraping_novel_titleアクションに飛ばしています。
javascript
1//---application.js--- 2$(document).on('turbolinks:load',function(){ 3 4 $("#novel-info").click(function(){ 5 $.ajax({ 6 url: "scraping_novel_title", 7 type: "GET", 8 data: { url : $("#novel-url").val() 9 }, 10 dataType: "html", 11 success: function(data) { 12 // alert("success"); 13 console.log('success'); 14 }, 15 error: function(data) { 16 // alert("errror"); 17 console.log('error'); 18 } 19 }); 20 }); 21}); 22
コントローラ内でスクレイピングしてデータを取得、インスタンス変数に格納しています。
それをjavascriptに渡すよう実装しているつもりです。
ruby
1#app/controllers/matomes_controller.rb 2 def scraping_novel_title 3 agent = Mechanize.new 4 page = agent.get(params[:url]) 5 @novel_title = page.at('.novel_title').inner_text 6 7 respond_to do |format| 8 format.js 9 end 10 end 11
以下のjavascriptファイルが呼ばれるかを試すために、
単純なalertを入れましたが動きませんでした。
javascript
1//app/views/matomes/scraping_novel_title.js.erb 2alert('aaaa');
画像を見る限り、狙ったjsファイルが読み込まれているように思えます。
ajaxのレスポンスもサクセスとなっています。
何か、アドバイス、わかることがありましたらぜひご教示お願いいたします。
補足情報(FW/ツールのバージョンなど)
Rails5
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。