かっちゃんの日記

初めまして!自営業(タイヤの卸売)をやってます。新規事業としてアプリ開発に興味がありプログラミングを勉強中です。日々の学びを発信していきます。よろしくお願いします。HTML/CSS/haml/sass/Ruby/Ruby on rails/Javascript/Jquery/Git/GitHub/データベースとSQL/統合テスト/AWS

rails

【アプリ開発エラーメモ】外部キーをDBに保存する

今制作してるアプリで、DBに登録した情報 + 登録者(current_user)を加えたかったのですがエラーを起こしたのでメモします。 まず私のミス ストロングパラメータにcurrent_user.idと書いたら一緒にDB入るだろうと思ってましたがむりですね、思考停止してま…

【アプリ開発エラーメモ】DBにparamsが入らない

結果から言うと、外部キーを持っているテーブルだったのですが、optional:trueが抜けてました。 paramsがcreateアクション内で取得できるのに、データベースに入らず、作業が詰まってしまいました。 デバックしてparamsの中身を見ると、 ・permitted: false …

【アプリ開発エラーメモ】 deviseのインストールの手順を間違えた時の対処方法

deviseのインストール手順を間違え、エラーが起きたので対処方法をアウトプットします 正しい方法 1deviseの導入(gem fileに書いて、$bundle install) 2ローカルサーバー再起動 $ rails s 3 $rails g devise:install (deviseの設定ファイルを設定) 4…

【Ruby】eachメソッドとwith_indexメソッド

ランキング形式で、データベースからレコードを出力させたい際に、index(番号)の表示でつまづいたので投稿します。今回の私のケースだとランキングの順位表示になります。 二つのメソッドを組み合わせます。 ・eachメソッド 配列で要素を一つずつ繰り返し…

【Ruby】mapメソッド

mapメソッドとは配列オブジェクトのインスタンスメソッドです。 流れ 1配列の中身を1つずつ取り出す 2ブロックという構文を繰り返し実行 3ブロックの中で返り値を集めて、新しく配列を作る 例えばこんな感じです numbers = [2, 5, 9] cube = numbers.map…

【Ruby】レシーバとselfについて(インスタンスメソッド)

レシーバとは、インスタンスメソッドを利用してるインスタンス自身のこと。 インスタンスメソッド内でselfと書くと、そのメソッドを利用したレシーバが代入される この説明だけだと分かりにくいですね。笑 実際にコードを見てみましょう。 sample.rb 13行目…

【Rails】requireメソッドについて

https://chkc.hatenablog.com/entry/2019/07/26/151823 前回、form_forでレビューをコントローラへ飛ばすところまで書きました。 目次 1requireメソッド 2mergeメソッド 1 今回は、送られてきたform_forで送られたparamsをデータベースへ保存する方法につ…

form_forについて

前回の続きになります。 https://chkc.hatenablog.com/entry/2019/07/26/111954 ルーティングが完了して新規レビュー投稿のページができるとこまでやりました。 今回は、入力フォームから送られたデータはReviewモデルのインスタンスとしてreviewsテーブルに…

resourecesメソッドのネスト

以前学習した時に理解が浅かったので復習です。 今回、例に挙げるのが「映画のレビューを投稿する機能」の実装で、その際のルーティングになります。 まずresourecesメソッドを使わずに書きます。 2行目reviews/newでレビュー新規作成のためのページのルー…

LIKE句の使い方

LIKE句を使ったキーワード検索 前提として、基本的にフォームに入力された情報はparamsという変数に入っています。 変数はハッシュオブジェクトで、キーとバリューで構成されていて、name属性の値がキーになります。 今回はname="keyword"とあるのでkeyword…

データベースにカラムの追加(削除)の仕方

復習。いつも忘れるのでメモがわりに、、 カラムの追加(意味はないけど生成するマイグレーションファイルのクラス名はrate) ①$bundle exec rails g migration AddRateToProducts ②add_column :テーブル名, :カラム名, :カラムの型 ③$bundle exe rake db:…

スクレイピング(ページネーションの全て取得する方法)

https://chkc.hatenablog.com/entry/2019/07/24/190213の続きです。 大きな流れ 1リンク取得 2リンクに対してtitleとimage_urlをスクレイピング この流れは同じで、ページネーションしてあり複数のページがある場合は、1リンク取得を複数ページを対象にす…

スクレイピングした情報をDBに入れる方法

MovieReviewというサイトを使って実装します。 大きな流れ MovieReviewで表示されている映画の個別ページのリンクを取得する 取得した個別ページのリンク1つ1つに対してスクレイピングをする 前提① 映画の情報を扱うために今回はProductモデルを作ります。…

スクレイピング(get_attributeメソッド)searchメソッドの代わりにatメソッドを使う

atメソッドはsearchメソッドと同じようにセレクタを指定して、該当するHTML要素を取得するメソッド ただし、searchメソッドのように該当するものが複数あってもすべて取得はせず、最初の1つしか取得しない searchメソッド atメソッド 1つなので繰り返し処…

スクレイピング(get_attributeメソッド)

get_attributeメソッド aタグ要素のHTMLはリンク先のURLを値とする属性hrefを持っています。このようなHTMLの属性の値を取得したい場合、get_attributeメソッドを使います。 今回は、画像のURLを取得したいので、get_attributeメソッドを使います。 こちらの…

スクレイピング(inner_textメソッド)

復習がてらアウトプットしてみます^^ スクレイピングとは、ウェブサイト上のHTMLからある特定のデータを抜き出す処理のことで、外部のサーバーからデータを抽出し、集計をしたりするときに役立つそうです。 Mecanizeというスクレイピングを行うためのgemが必…