BETA

Webサイト製作の足跡ブログ②

投稿日:2018-10-19
最終更新:2018-10-24

今日もいくつか問題解決ができたのでまとめておきます。

今日のまとめ

  • 検索用キーワードをViewからControllerへ渡して、Webサイトでの検索結果をターミナル上にputsで表示できるようになった。
  • チェックボタンをViewに実装し、複数サイトの検索をまとめて行えるようになった。
  • 検索は半角アルファベットのみ可能で、日本語だと文字コード?のエラーが起こるので、その辺の解消が課題。

form_for, form_tagとform_with

検索窓を実装する際、最初はform_tagを使用していました。 しかし、調べているうちに、form_forとform_tagは非推奨になり、2役を賄えるform_withを使うべきだという情報に出くわしたので、今回はform_withを使用しました。

【Rails 5】(新) form_with と (旧) form_tag, form_for の違い

<%= form_with method: :get, url: pages_search_path do |form| %>
    <%= check_box "target", "Qrunch" %>クランチ
    <%= check_box "target", "Qiita" %>キータ<br>
    <%= form.label("検索ワード") %>
    <%= form.text_field :keyword %>
    <%= form.submit("target", class: "btn") %>
<% end %>

check_boxのチェック状況をコントローラーで使用する

上記で、例えばQiitaだけRubyで検索したいなーってなった場合、どーやってコントローラー上でチェックを判断するんじゃーってなってました。下記のサイトを参考にさせていただきました。

【Ruby on Rails】Checkboxの値を配列としてコントローラに渡し、チェックがついている値だけDBに保存する方法

上記の場合、targetには二次元配列として「"プロパティ名"、"チェック状況(0 or 1)"}」という風に格納されます。Qiitaだけチェックがあるなら、「"Qrunch","0","Qiita","1"」って感じかな・・・ で、targetをコントローラー上で下記のようにeachで回します。

    params[:target].each do | di1,di2 |
      # 各種Targetサイトのチェック
      if di2 == "1"
        # チェックされているサイトについて情報を抽出する
        case di1
        when "Qrunch"
        -----サイトから情報を抽出する処理-----

        when "Qiita"
        -----サイトから情報を抽出する処理-----

        end
      end
    end

text_fieldに入力されたkeywordは、submitボタンを押すとparamsにシンボルとして格納され、コントローラーで使えるようです。これも今日引っかかってたところなのでメモ。 これで指定したサイトにのみ抽出処理を行えるようになった。

抽出処理も検索先のUrl指定もバグがたくさん出そうだなぁ・・・先は長い。

いろんなサイト様を参考にさせていただいております。ありがとうございます。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

作ったもの、プログラミングで共有できそうなこと、IT関連でやってみたことなど、なんでも書いていきます。ヤドン可愛い

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!