前提・実現したいこと
・seleniumを用いたスクレイピングによってサイト記事の文字数を取得し、取得結果を画面に表示させたい。
・controllerファイルに記述するのは好ましくないということで、modelファイルに記述することにした。
・Formオブジェクトを用いて表示させようとしているが、うまくいかない。
何をどのように変更すればいいのかご教授いただけますと幸いです。
どうかよろしくお願いいたします。
発生している問題・エラーメッセージ
該当ソースコード
↓controller
ruby
1class AffiliatesController < ApplicationController 2 def index 3 @affiliate = Affiliate.new 4 end 5 6 def show 7 @affiliate_keyword = KeywordForm.new 8 end 9 10 def create 11 @affiliate = KeywordForm.new(affiliate_params) 12 @affiliate.save 13 redirect_to affiliate_path(@affiliate.keyword) 14 end 15 16 private 17 def affiliate_params 18 params.require(:affiliate).permit(:keyword) 19 end 20end
↓model(Formオブジェクト)
ruby
1require "selenium-webdriver" 2require 'pry' 3 4class KeywordForm 5 include ActiveModel::Model 6 7 attr_accessor :keyword 8 9 def save 10 Affiliate.create(keyword: keyword) 11 12 affiliate_keyword = Affiliate.new(keyword: keyword).keyword 13 driver = Selenium::WebDriver.for :chrome 14 15 driver.navigate.to "https://www.google.co.jp/" 16 inputElement = driver.find_element(:name, 'q') 17 inputElement.send_keys affiliate_keyword 18 19 inputElement.submit 20 21 search = driver.find_element(:css, "div.rc a") 22 search.click 23 24 content = driver.find_element(:css, "body") 25 @affiliate_keyword = content.text.length 26 driver.quit 27 end 28end
↓view
ruby
1<div class="show-wrapper"> 2 <%= @affiliate_keyword %> 3</div>
あなたの回答
tips
プレビュー