if it does't challenge you, it can't change you

RubyのWebエンジニアやってます。主にRuby on Railsのことで勉強になったこと書いていきます。

railsコマンドでファイル名を指定してseedデータを入れる方法

バージョン Ruby 2.3.1 Rails 5.1.4 テストデータやマスタデータの挿入 Railsにはデフォルトでdb/seeds.rbというファイルが生成されていて、 ここにインサート文などを書いておくと、 rails db:seedでデータをDBに挿入してくれます。 指定したseedファイルだ…

【Ruby】もっと早く知っていればよかったmapメソッド

mapメソッド mapメソッドとは、配列やハッシュに対して使えるメソッドで、要素の数だけ繰り返しブロックを実行し、ブロックの戻り値を集めた配列を作成して返します。 ↑と、Rubyリファレンスには書かれております。 このメソッドを知った時は、このメソッド…

【Ruby on Rails】結局メソッドってどこに書けばいいの?

Railsではモデルなんて使わなくてもコントローラやビューにメソッドを書きまくっても動かすことができます。 しかし、そんなことをしてたらMVC構造の意味がないですし、きちんと考えて書くことによって、そのコード量を劇的に減らすことができます。 メソッ…

Rails5.1にReactを導入

react-railsとwebpackerの場合 インストール Gemfileに以下を追加して、bundle install gem 'react-rails' gem 'webpacker' installコマンド実行 rails webpacker:install rails webpacker:install:react これでReactに必要なフォルダやファイルが生成されて…

複数のフォームがあり空のフォームはサブミットされないようにする

したいこと 二つのフォームがあり片方は何も書かれていない空の状態であれば、そのフォームをサブミットせずに記入されている片方のフォームだけ送信する方法。 この記事のように二つのフォームが同じモデルへ送信するのであれば、これは意味がないが、それ…

textareaの縦幅を入力行数によって自動変更させる方法

autosizeというライブラリを使います autosize | RubyGems.org | your community gem host デモはこちら 方法 Gemfileに記入 gem 'autosize', '~> 2.4' bundleinstallを実行 app/assets/javascripts/application.jsに以下を追記 //= require autosize 本来な…

一つのフォームで複数のモデルに保存する

したいこと 今回は映画のレビューを投稿するreview投稿フォーム画面に、 映画の好きなフレーズを投稿できるphrase投稿フォームも表示し、 一度送信ボタンへ押すだけでreviewはもちろん、そのreviewに紐づいたphraseも保存する。 なので、reviewモデルとそのr…

deviseで作ったuserモデルにカラムを追加し、sign up時に登録されるようにする

gemを読む GitHub - plataformatec/devise: Flexible authentication solution for Rails with Warden. この部分 # In case you want to permit additional parameters (the lazy way™), you can do so using a simple before filter in your `ApplicationCo…

HerokuとS3を連携

S3の初期設定 この記事のバケットの作成のところ(Imagemagikの導入の手前)までの通りすればできました。 【Rails】S3へ『CarrierWave+fog』を使って画像アップロードする方法 | vdeep Gemfile こちらを追加し、bundle install gem 'fog-aws', group: :produc…

file_filedの注意点

今回、以下のformで画像をupすることにして、空で送ってしまったときはバリデーションにひっかかるように設定しようと思った。 <%= form_with(model: @user_icon, local: true) do |form| %> <%= form.file_field :image %> <%= form.submit "更新する" %> <…

RailsでAjaxを使ってコメントの編集方法

インスタのクローンアプリを作っていて、コメント部分をajaxで追加・編集・削除してみたので、その時に勉強になったコメントをajaxを使って更新する方法を書いておきます。 ※この記事は最初2017年の12月に書いていたのですが、今見直すとあまりにも何を書い…

スクレイピングして選択肢を抜き出して、選択ボックスを作る方法

ソースコードからスクレピングで抜き取りたい項目を抜き取る。 ハッシュに追加していく。 それを使って、選択ボックスを作成 helper.rb module ConditionsHelper #diverの質問投稿のソースコードから必要なものをdocフォルダの中のそれぞれのファイルにコピ…

CSS テキストの折り返しスクロール方法

■white-space: pre-wrap改行や半角スペースがブラウザ表示にそのまま反映要素の端で行が折り返される ■overflow: scrollスクロールできるように ■word-wrap: break-word行の端で自動折り返し

ActiveRecordでsaveメソッドの表記

疑問点 何か新しいレコードを作りたい時、同時に違うテーブルにもレコード作りたい時に下記のようにコントローラーに書けば登録できるが、きたない。 condition = Condition.new condition.student_id = @student.id condition.progress = 0 condition.date …

アソシエーションのthroughとsource

models/user.rbのアソシエーション設定で has_many :blogs, through: :favorites ↑これを has_many :favorite_blogs, through: :favorites, source: :blog のように書いたら、user.blogsだけでお気に入りを全部取得する。 user.blogsでユーザーが書いた全て…

bcrypt bundle install エラー

gem 'bcrypt', '3.1.11'をbundle installを実行すると下記のエラーが発生 sesion_login $gem install bcrypt -v '3.1.11' Building native extensions. This could take a while... ERROR: Error installing bcrypt: ERROR: Failed to build gem native exte…

redirect_toとrenderの違い、renderの注意点

redirect_toはコントローラーのアクションを指定。 renderはコントローラーを通さず、ビューファイルを指定。 student/showファイルでBlog.newを作って、blogsテーブルに新しいレコード作成しようとする時に、バリデーションに引っかかってみる。 バリデーシ…

getsメソッド使い方

gets メソッド gets →文字列+\nで入力 gets.chomp →改行\nを削除。文字列を認識したいときに使える gets.to_i →整数で入力

繰り返し処理のnextとwhileの条件について

whileやfor文の繰り返し中にnextがあるとそれ以下の処理をスキップして次の繰り返し処理に行く。 i = 0 while i < 8 do i += 1 if i == 5 next end p i end >>>1 2 3 4 6 7 while 繰り返し条件 do 繰り返し式 繰り返しの条件は「条件がtrueの間」は繰り返し…

RailsでjQuery読み込み方法

バージョン Rails 5.1.4 1. jQueryライブラリを読み込む app/assets/javascript/application.jsに下記を追記 //= require jquery //= require jquery_ujs ※javascriptは作成したjsファイルにjavascriptコードを書けばいいが、jQueryはjacascriptのライブラリ…

アコーディオン機能の三角がくるっと回るやつの設定方法

html <dt><p><img src="./images/triangle.png" class="arrow">&emsp;学歴</p></dt> <dd><p>長岡技術科学大学 環境工学課程卒業</p></dd> <dt><p><img src="./images/triangle.png" class="arrow">&emsp;実績</p></dt> <dd><p>オーストラリアワーキングホリデー<br>6,000kmヒッチハイク旅制覇</p></dd> <dt><p><img src="./images/triangle.png" class="arrow">&emsp;SNS<…</p></dt>

Rails でcssの適応方法

バージョン Rails 5.1.4 1. app/assets/stylesheets/〇〇.cssを作成。 2. config/initializers/assets.rbに Rails.application.config.assets.precompile += %w( contact_new.css ) を追加

バリデーションの日本語表示の仕方

1. 辞書ファイルをダウンロード まずプロジェクトのトップで下記コマンドを実行して、辞書ファイルをダウンロード。プロジェクトのトップとはアプリ名がsampleであれば「:~/workspace/sample (master) $ 」のようにディレクトリを移動してからという意味 # …

Rails5 バリデーションの書き方

バージョン Rails 5.1.4 対象 下図のようなお問い合わせフォームのバリデーションを作成していく。 文法 validates シンボル1,シンボル2, シンボル3,・・・, バリデーションの種類: {オプション: true} ※カラムのシンボル名は→「:」+「カラム名」※「バリデ…

Ruby on Rails一連の流れ

全体の流れ 1.ブラウザからのリクエスト→ルーター 2. ルーター→コントローラー 3. コントローラー→モデル 4. モデル→DB 5. コントローラー→ビュー 1.ブラウザからのリクエスト→ルーター ユーザーがブラウザからサーバーにリクエストを送る。リクエストにはUR…

関数の中に余分の変数に余分な引数が格納される

関数judgementで仮引数pointsが設定されている。その関数に仮引数の個数以上の引数を渡すと、その関数内に違う変数があれば、余分な引数は自動でその変数に格納される。もし、関数内に余分な変数がなければエラーになる。 function judgement(points, args){…

Javascriptはメソッドの外の変数も読み込む

Javascriptはメソッドに引数を設定しないで、メソッドを呼び出してもメソッドの外の変数を読み込んで計算する。 メソッド(get_achievement)に引数を設定しないで、そのメソッドを呼び出しても、メソッドの外にある変数pointsを読み込み計算している。これを…

hash.keyでキーを取得したときは文字列ではない

sample = {name:"あり", email:"",password:"あり"} empty = sample.key("") puts empty if empty == :name @error = "お名前" elsif empty == :email @error = "メールアドレス" elsif empty == :password @error = "パスワード" end puts @error sample配…

配列はそのまま足せる

arr1 = [1,2,3]arr2 = [4,5,6]arr3 =[9] p arr1 + arr3 + arr2 >>[1, 2, 3, 9, 4, 5, 6]

for,each文の条件は範囲オブジェクトか配列

for number in 0..10 do puts number end javascriptとは違うみたい > for(let i = 0; i<100; i++){ console.log(i); }