箱のプログラミング日記。

えんじにあ奮闘記

2019-01-01から1年間の記事一覧

【rubyアルゴリズム】整数を分解したい

アルゴリズム問題を解いているとたまにある、 「二桁の整数を10の位と1の位に分解して、それらをどうこう」 みたいなやつ。 「分解」と聞いて真っ先に思い浮かぶのが 私の場合はsplitなんだけど(安易?) splitってstringに使うものだから整数にto_sするの…

elsifを使わずにfizbuzzを実現【Ruby】

有名すぎるアルゴリズムのうちの一つ、fizbuzz問題の応用編を解きました。 一般的なfizbuzz問題 1から100まで数を数える時に、3の倍数なら「fizz」、5の倍数なら「buzz」、ただし15の倍数なら「fizzbuzz」、それ以外はその数を答えなさい。 普通に解くなら、…

create前に確認画面を作りたい【Rails】

Railsで商品予約システムを開発しています。 巷のアプリとかでもよくある「この内容でよろしいですか?」みたいな確認画面を newとcreateの間に挟みたいな・・・と思いつきました。 主なモデルは以下 ユーザー:user 商品:product 注文:order 先に、参考に…

railsをherokuでデプロイ【アセットパイプラインが通らない】

今日、ポートフォリオをデプロイしました。 作成中ではあるもののアジャイル型で・・・ということで。 デプロイに関してはほぼ未経験。 スクールのチーム開発では、デプロイ担当さんが大変そうにやってるのを ふーん・・・って聞いているのが精一杯でした ※…

fields_forを使った子モデルへの複数レコード保存【cocoonが便利】

Railsで商品予約システムを開発中です。 あるオブジェクトをcreateする際に、一部の情報だけ別モデル(子モデル)へ保存したい時って頻繁にあると思いますが そこに非同期(JavaScript)によるフォームの出現を組み合わせた、最高に便利なgemに出会いました…

「ログアウトしてよろしいですか?」のアラートを出したい【Rails】

Railsでdeviseを使ってアプリを作成しています。 ユーザーがログインやログアウトした際に「ログインしました」「ログアウトしました」というフラッシュメッセージを出すのは比較的簡単ですが、 例えばログアウトボタンを押したら「ログアウトしてよろしいで…

railsで管理者権限を付与したい【rails_admin】

Railsで商品予約サイトを作成しています。 ユーザー機能はdeviseで実装し、権限によってできる処理を分けたかったので adminを使用しました。 主に使用するモデルとしては product(商品) user(顧客) order(注文) といった感じです。 今回、通常ユーザ…

date_selectの使い方【Rails】

form_forやform_withの中で使えるヘルパーメソッドで よく見る日付や時刻をプルダウンで選択できるフォームを簡単に作ることができる、 date_selectを使用してみました。 こんな感じ。 コードは以下(form_forは省略) = f.date_select :date, {include_blan…

フラッシュメッセージの作り方【Rails】

フラッシュメッセージとは 「登録が完了しました」「削除が完了しました」というように 正常な動作ができていることをユーザーに知らせるためのメッセージのこと。 Railsではリダイレクトとともに使われることが多いように思います フラッシュメッセージの表…

Ajaxとjsonを使用した非同期通信の実装

ブログ少しご無沙汰していました 本日はAjaxについて。 Ajaxについては1ヶ月少し前に初めて学んだ時はほとんど理解ができていませんでしたが 最近になってjQueryの基礎力がだいぶついた状態&使うのが3回目くらいでやっと おおよそが理解できるレベルにな…

Rubyの繰り返し処理いろいろ

繰り返しといえばwhile文かたまにfor文という感じたったのだけど 調べたら他にも便利な繰り返し処理がいくつかあって、 用途によって使い分ける必要があるなぁと感じたので使ってみました。 今回使ったのはupto - 0.upto(10) do |i| (hamlで書いてます) iが…

JavaScript each文の書き方

基本構文 $('セレクタ').each(function(index, element){ 処理 }) eachで処理を回すとともにindex番号をつけることができるので、 例えばul要素の中にあるli要素に対し、 順番にindex番号のついた異なるidをつけていく、とかが実現できる。 以下参考 www.sej…

JavaScript if文の書き方

基本構文 if (条件式) { 処理 } else { 処理 } 条件式を追加したい場合は「else if」で記述する。 変数定義をif文で分岐 var input = (function(){ if(条件式) return 'aaa'; if(条件式) return 'bbb'; return 'ccc'; })(); else ifを省略して書くことができ…

jQueryでの変数の使い方

セレクタ内で変数を使う $('#label-box--${i}').css('width', '400px'); 普通はこう書くけど、 $(`#label-box--${i}`).css('width', '400px'); このように書くこともできる。 つまり、テンプレートリテラル${}を使いたい時は セレクタを文字列として「``」で…

Railsのエラーメッセージを好きなものに変更【バリデーション】

バリデーションとは validate・・・検証する ユーザーがフォームに値を入力してsubmitする時などに制限をかけること。 例)入力必須、◯文字以下など 基本的な書き方 対象モデルに書く。 validates :カラム名, 条件 空じゃないかどうかを検証 class Post < Ap…

RailsでjQueryを最初に使う時にやること

gemをインストール gem "jquery-rails" bundle installとサーバーの再起動を実行 application.jsを編集 app/assets/javascripts/application.js に以下の二行を記述 //= require jquery //= require jquery_ujs //= require jquery //= require jquery_ujs /…

enumの使い方【Rails】

enumとは railsの場合は標準機能としてモデルに記述することで使うことができる。 セレクトボックスから選ばせた値をDBに保存する時などに便利 わざわざDBにテーブルを作って保存しておくほどではない静的なデータも ユーザーに任意の値を入力させたり、いく…

カラムにreferencesの指定ができない【MySQL文法エラー】

カラムに外部キー制約をつけようとしたところうまくいかなかったので、 解決方法を残しておこうと思います。 実現したかったこと postテーブルを作成後、複数のカラムを追加 その際、外部キー制約を設定するカラムが含まれていたが、エラーになる テーブルは…

scssの便利な使い方【mixin】

scssでmixinを使用して関数定義する方法について だいぶリファクタリングができるようになってきたので記事にします。 scssとは 体感的にはcssのように書くことができる ネストさせて書いていくので、BEMの原則と相性が良い 例えば <div class="post-content"> <div class="post-content__title-box"> <h1>scssはとても便利です</h1> </div> </div>…

Railsの命名規則【単数形・複数形】

基本原則 コントローラー・・・複数形 モデル・・・単数形、先頭大文字 で作成すると言うのはおなじみ。 $ rails g controller users $ rails g model User 複数の単語を繋げたい場合 コントローラーの場合はアンダーバーで繋げる モデルは大文字で繋げる $ …

テキストを折り返し表示【CSS】

CSS

HTMLを書いていて、例えばpタグの中の文章を改行させたい場合 おはようございます。 今日の天気は雨です 明日は晴れです <p>おはようございます。</p> <p>今日の天気は雨です</p> <p>明日は晴れです</p> pタグはブロック要素なので、pタグで囲まれた要素は一行を占領する。 つまり…

prefixでidを複数持たせる方法【ルーティング】

今まで何となくしか理解できていなかったルーティングですが、 自分でアプリケーションを作るようになるとそういうわけにもいかず。 きちんと勉強しまくったところ、深いところまで知ることができたので きちんと残しておこうと思います。 固有のアクション…

carrierwaveで複数画像投稿【Rails】

レビューサイト作成にあたり画像の複数投稿を実装したので carrierwaveの使い方を買いておこうと思います。 ①gemをインストール gem 'carrierwave' gem 'mini_magick' $ bundle install 今回はmini_magickを使って画像の加工(リサイズなど)も実現したいの…

Mechanizeでスクレイピング【Rails】

Mechanizeというgemを使用してスクレイピング(外部サイトから情報を取得する)を行う手順を書いていきます。 ①Mechanizeをインストール gem 'mechanize' $ bundle install ②model配下にscraping.rbを作成 今回はスクレイピングで取ってきた要素をデータベー…

GitHubでリポジトリの作成とアプリケーションの開発

新しくアプリケーションを作る時に、同じく新しくGitHubのリポジトリを作ることになると思います。 おそらく慣れてしまえばブログに残すほどのことでも無いかもしれませんが、 現段階ではまだ数回しかリポジトリの作成をしておらず、今後流れが分からなくな…

jQueryのメソッド【引数】

jQueryの基礎を勉強したので、思考の整理のために残しておきます。 jQueryとは jQuery(ジェイクエリー)は、ウェブブラウザ用のJavaScriptコードをより容易に記述できるようにするために設計されたJavaScriptライブラリである。 (Wikipediaより) JavaScri…

link_toと仲良くなりたい

link_toに死ぬほど苦しめられた私。 仲良くなるためにきちんと向き合って勉強してみました。 link_toとは Railsのヘルパーの一つ。HTMLで言うaタグに当たる。 その名の通り、どこかにリンクを飛ばしたい時に使うことができる。 Railsでは、HTMLのタグを使う…

単体テスト、統合テストの違い

テストとは アプリケーションを開発環境から本番環境に移す前に、 それまで書いたコードが正常に動作するかどうかを確認する作業のこと。 ユーザー登録、投稿機能が備わっているアプリケーションとかって 自分で登録してみて動作確認をする、っていう事しか…

form_forの書き方・使い方

form_forがなかなか理解できず、いつもコピペでしたが ついにしっかり理解しなきゃいけない日が来たので、ざっと調べてみました。 form_forの基本構文 <%= form_for(@article) do |f| %> ~~中身~~ <% end %> form_forはRailsのヘルパーのひとつで、 HTMLで言…

Railsでアプリケーションを作る【最初の作業】

まだ初心者ですが、Railsで簡単なアプリケーションを作れるくらいのレベルにはなったので、 多分初学者がつまづきやすい(というか忘れがちな) 「アプリケーションを作るときの最初の第一歩」をまとめておこうと思います。 ※RubyやRailsの開発環境が整って…