Ruby/Rails

Ajaxによるボタン表示の切り替え

Ajaxを使えば、Webページからサーバーに非同期で、ページを移動することなくリクエストを送信することができる。 ビュー remote: trueによってJavascriptによる変更が可能になる <%= form_with(model: ..., remote: true) do |f| %> ... <%= f.submit "Foll…

Active Storage

ファイルアップロード機能を提供。 インストール % rails active_storage:install % rails db:migrate 設定 # 開発環境 # config/environment/development.rb config.active_storage.service = :local # 本番環境 Amazon S3を使うときの例 # config/environm…

Procオブジェクト

Procオブジェクト メソッドのブロックを渡したオブジェクト。 callメソッドが呼ばれたときブロック内の処理を評価する。 proc_hi = -> { puts "hi" } proc_hi.call => "hi" # 引数を渡すとき proc_greeting = -> n{ puts n } proc_greeting.call("hi") => "h…

sendによるメソッドの抽象化

sendメソッド 渡されたオブジェクトに「メッセージを送る」ことによって、呼び出すメソッドを動的に決めることができる。 a = [1, 2, 3] a.length => 3 a.send(:length) => 3 a.send("length") => 3 xxx = 'length' a.send("#{xxx}") => 3 どれもオブジェク…

Action Mailer

メイラーの作成 メイラーは概念上コントローラと似通っており、メイラーを生成すると (コントローラと同様に) ビューのディレクトリとテストも同時に生成される。 % rails g mailer UserMailer account_activation UserメイラーとApplicationメイラーの編集 …

attr_accessorと仮想的な属性

attr_accessor セッターメソッド(属性を与える)とゲッターメソッド(属性値を読み取る)を同時につくる。 インスタンス変数にDBには保存しない仮想的な属性を与える時に有効。 class User < ApplicationController attr_accessor :remember_token ...

renderとredirect_to

render ビューを出力(レンダリング)する。リクエストは行われない。 描画するためのテンプレートを探す(規約:views/コントローラ名/アクション名.html.erb) 見つかったテンプレートをもとに、データを展開し最終的なHTMLを生成しレンダリングする。 cla…

protectedとprivate

protected:定義されているクラスのインスタンスであれば呼び出せる private:そのオブジェクト(selfを使う文脈)からしか呼び出せない どちらも:定義されているクラスとサブクラスのインスタンスメソッド内でのみ呼び出せる。 class Piyo def internal pr…

ストロングパラメータ

マスアサインメント機能:複数のパラメータをまとめて登録・更新できる機能。 user = User.new(params[:user]) # 複数のパラメータの集合 user.save マスアサインメント脆弱性:上の例で、params[:user]が改変されていた場合(adminなどのパラメータの追加な…

form_with

<%= form_with url: posts_path do |f| %> <%= f.text_field :title %> <% end %> postsコントローラにparams[:title]を送る <%= form_with scope: :post, url: posts_path do |f| %> <%= f.text_field :title %> <% end %> postsコントローラにparams[:post…

ActiveRecord

RailsのMVCでいうモデルに相当するもの。 CRUD、コールバック、バリデーション、マイグレーションに関するメソッドを提供する。 また、様々なデータベースとの互換性があり、データベースの種類に関わらず同じ表記ができる。 ORMフレームワークとしてのActiv…

アセットパイプライン

アセットパイプライン:JavaScriptやCSSやそれらの拡張言語で書かれたアセットを最小化 (minify: スペースや改行を詰めるなど) または圧縮して連結するためのフレームワーク。分割されたアセットファイルを一つにまとめて配信することで、開発効率と読み込み…

Sass

Sass:CSSの拡張言語 ネスト スタイルシート内に共通のパターンがある場合は、要素をネストさせることができる。 .title { text-align: center; h1 { margin-bottom: 10px; } } h1は.titleのルールを継承している 変数 値に変数名を与えることができる。 $la…

Bootstrap

Bootstrap CSSひな形フレームワーク。 使用手順 1.bootstrap-sassのインストール gem 'bootstrap-sass' % bundle install 2.asset/scssにcustom.scssを作成 @import 'bootstrap-sprockets'; @import 'bootstrap' 一番上に記入

Rails風味のRuby

Rubyは オブジェクトとメッセージの受け渡しで全てを表現できる。オブジェクトを中心に物事をおこす(オブジェクト指向) オブジェクトにはメッセージを投げかけると何かしら返ってくる。文字数は?とか空ですか?とか trueという答えですらオブジェクトであ…

Bundlerの使い方

Bundler:Gemの依存関係を管理するライブラリ。 Gemの依存関係を管理するとは? 一つのGemを使えるようにするために、そのGemが依存しているGemも一括でインストールする。バージョンも合わせる。 bundleコマンド % bundle exec ____ Gemfile内で指定されて…

Gemfileの書き方

Gemfile:必要なGemを記述する。 Gemfile.lock:bundlerによって固定されたGemの具体的なバージョンを記録する。バージョン管理に使う。 Gemfileの書き方 gem 'rails', '____' 1.0.0 # バージョンを固定 >= 1.0.0 # これ以上のバージョンが必要 >= 1.0.0, < …