Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby on Rails

Ruby on Rails | JSON形式のレスポンスを返却する

概要 JSON形式のレスポンスを返却する 詳細 JSON形式のレスポンスを返却します。 render :json => variable サンプル class HogeController < ApplicationController # 他のコード def json_hoge render :json => Book.first end end 出力 /hoge/json_hogeへ…

Ruby on Rails | リクエストヘッダの取得

概要 リクエストヘッダの取得 詳細 リクエストヘッダを取得します request.headers[:key] サンプル class HogeController < ApplicationController # 他のコード def headers_output ret = [] ret << "request.headers[:HTTP_USER_AGENT] = #{request.header…

Ruby on Rails | underscore.jsでJavaScriptの便利なユーティリティを利用

概要 underscore.jsでJavaScriptの便利なユーティリティを利用 詳細 コレクション向けのAPIなど便利なユーティリティを利用できるunderscore.jsを Railsに組み込みます。 underscore.jsの詳細については下記参照。 http://documentcloud.github.io/underscor…

Ruby on Rails | 全て・有・無を扱うラジオボタンの検索を部品化する

概要 全て・有・無を扱うラジオボタンの検索を部品化する 詳細 全て・有・無を扱うラジオボタンの検索を部品化します。 フラグ系の項目に対して、true・false・その双方を検索するような 要件は多々あると思います。 べた書き版 scope ユーザーの権限と削除…

Ruby on Rails | 部分テンプレートに変数を引き渡す

概要 部分テンプレートに変数を引き渡す 詳細 部分テンプレートに変数を引き渡します。 部分テンプレートはその性質上、「ほとんど同じだが微妙に異なるレイアウト」であることが多く、 その差異を変数として渡したいシチュエーションが多いです。その場合、…

Ruby on Rails | scopeでModelに検索条件を定義

概要 scopeでModelに検索条件を定義 内容 scopeを利用して、Modelによく利用する検索条件を定義することができます。 scope(スコープ名, 条件式) scopeメソッドはチェーンして流れるようなインターフェースで利用することも可能です。 サンプル ユーザーの検…

Ruby on Rails | Viewで文字列をエスケープせずに出力

概要 Viewで文字列をエスケープせずに出力 内容 Viewで文字列をエスケープせずに出力します。 通常、Rubyの変数をViewで出力する場合Hamlなら =hoge のようにしますが、この場合デフォルトでHTMLタグ等がエスケープされています。 CMSを扱う際など、あえてHT…

Ruby on Rails | JQuery.dialogでカスタムダイアログの作成

概要 JQuery.dialogでカスタムダイアログの作成 内容 JQuery.dialogでカスタムダイアログの作成します。 サンプル 仕様 ユーザー一覧画面の各レコード単位で表示される削除ボタンの 押下時に使用するカスタム確認ダイアログを作成します。 個別のボタンを処…

Rails4 | Rails4非推奨の警告への対応 独自定義フィルタ#filter、link_to_function Viewヘルパーを最新化する

概要 Rails4非推奨の警告への対応 内容 独自定義フィルタのfilterメソッド クラスマクロのbefore_filterがbefore_actionになったことは別途記事にしましたが、 http://d.hatena.ne.jp/tbpg/20130725/1374760826 独自定義フィルタ#filterを個別のクラスとして…

Capybara | Rails、RSpec、Capybara, Kickstart, Poltergeist, phantomjsでJavaScriptのテスト環境設定

概要 Rails、RSpec、Capybara, Kickstart, Poltergeist, phantomjsでJavaScriptのテスト環境設定 内容 kickstart設定 kickstart.cssのimportをコメントコメントアウトして無効化。 /*--------------------------------- IMPORTS ---------------------------…

Ruby on Rails | モデルの各種項目の多言語対応

概要 モデルの各種項目の多言語対応 内容 モデルの各種項目の多言語対応をします。モデルの多言語対応時は辞書に activemodel: models: :model_name text attributes: model_name: attribute_name: text activerecord: models: :model_name text attributes:…

Ruby on Rails | リンク押下時に確認ダイアログを表示する

概要 リンク押下時に確認ダイアログを表示する 内容 リンク押下時に確認ダイアログを表示します。 link_toに:confirmオプションを指定することで確認ダイアログを利用可能です。 実装 ユーザー一覧画面の削除ボタンに確認ダイアログを追加する。 = link_to "…

Ruby on Rails | 値が変更されていないことを検証するValidatorを実装し、更新時のみ適用する

概要 値が変更されていないことを検証するValidatorを実装し、更新時のみ適用する 内容 値が変更されていないことを検証するValidatorを実装し、更新時のみ適用します。 実装 Validator lib/validator/not_changed_validator.rb class NotChangedValidator <…

Ruby on Rails | アイコン付きボタン風リンクの作成

概要 アイコン付きボタン風リンクの作成 内容 アイコン付きボタン風リンクを作成します。 kickstartやBootstrapなどのCSS素材を利用する際にRailsのサブミットボタン用のヘルパーメソッドでは アイコンを表示できないため迂回する手段が必要です。 (やり方…

Ruby on Rails | Font-Awesomeを追加してアイコンを利用する

概要 Font-Awesomeを追加してアイコンを利用する 内容 Font-Awesomeを追加してアイコンを利用します。 実装 Gemfile gem "font-awesome-rails", "~> 3.2.1.2" Bundler実行 bundle application.cssに下記を追記 *= require font-awesome ※springを利用してい…

Ruby on Rails | 自ページの場合はリンクを無効化する

概要 自ページの場合はリンクを無効化する 内容 自ページの場合はリンクを無効化します link_to_unless_current(リンク文字列, url [, オプション, HTMLオプション]) サンプル -if @menu_display = link_to_unless_current '新規登録', :controller => 'user…

Ruby on Rails | 特定の条件に一致もしくは不一致の場合のみリンクを作成する

概要 特定の条件に一致もしくは不一致の場合のみリンクを作成する 内容 特定の条件に一致もしくは不一致の場合のみリンクを作成します。 link_to_if(条件式, 文字列, url [, オプション, HTMLオプション]) link_to_unless(条件式, 文字列, url [, オプション…

Ruby on Rails | Modelの全列名を取得する

概要 Modelの全列名を取得する 内容 Modelの全列名を取得します サンプル User.attribute_names 出力 ※railsコンソールで確認 $ bundle exec rails c Loading development environment (Rails 4.0.0) [1] pry(main)> User.attribute_names => ["id", "name",…

Ruby on Rails | debugメソッドでyaml整形して変数を確認

概要 debugメソッドでyaml整形して変数を確認 内容 debugメソッドでyaml整形して変数を確認します。 サンプル %p = debug Book.first 画像

Ruby on Rails | 特定の条件に一致する場合にスタイルを指定する

概要 特定の条件に一致する場合にスタイルを指定する 内容 特定の条件に一致する場合にスタイルを指定します。 サンプル helper module UserHelper def deleted_class(deleted_at) "deleted" if deleted_at end end view - provide(:title, "ユーザー一覧") …

Ruby on Rails | Railsのdevelopment時のみ出力されるデバッグログ空行2行を無効化

概要 Railsのdevelopment時のみ出力されるデバッグログ空行2行を無効化 内容 Railsのdevelopment時のみ出力されるデバッグログ空行2行を無効化します。 該当箇所のソースコードはGitHubの下記参照。 https://github.com/rails/rails/blob/ffa9540fd361eb34c4…

Ruby on Rails | コントローラ、アクションの名前及びパスの取得

概要 コントローラ、アクションの名前及びパスの取得 内容 コントローラ、アクションの名前及びパスを取得します。 サンプル app/controller/hoge_controller.rb class HogeController < ApplicationController skip_before_filter :authorize def index @ti…

Ruby on Rails | Railsで自動生成しているコードのテンプレートを変更する

概要 Railsで自動生成しているコードのテンプレートを変更する 内容 Railsで自動生成しているコードのテンプレートを変更します。 まず以下のコマンドでテンプレートを出力出来ます。 rake rails:templates:copy デフォルトのControllerテンプレート lib/tem…

Ruby on Rails | 複数のコントローラーで利用する共有フィルタを作成する

概要 複数のコントローラーで利用する共有フィルタを作成する 内容 複数のコントローラーで利用する共有フィルタを作成します。 任意のフィルタ用クラスを実装し、 before,after,filterのどれかのメソッドを実装します。 それぞれ before_action,after_actio…

Ruby on Rails | Rails標準のコントローラーのパラメータログを無効化する

概要 Rails標準のコントローラーのパラメータログを無効化する 内容 Rails標準のコントローラーのパラメータログを無効化します。 独自定義のものに差し替えるため自分でapplication_controller.rbに定義します。 無効化設定 config/environment.rb module A…

Ruby on Rails | assetsのログを無効化

概要 assetsのログを無効化 内容 assetsのログを無効化します。 設定 Gemfile gem "quiet_assets", "~> 1.0.2" 設定前 ※独自フォーマットでLTSV化してます time:[2013/07/26 23:00:03.921] level:[INFO] msg:[Started GET "/assets/application.js?body=1" f…

Ruby on Rails | I18nで国際化対応

概要 国際化対応 内容 I18nを利用して国際化対応します。 ja.yml 日本語辞書ファイル ja: user: login: ログイン password: パスワード en.yml 英語辞書ファイル en: user: login: login password: password View %p = t('user.login') %p = t('user.passwor…

ログ管理 | Ruby on Rails | Railsのログをカスタマイズする

概要 Railsのログをカスタマイズする 内容 Railsのログをカスタマイズします LTSVに変更 ※別途記事参照 Railsのコントローラーログの無効化 ※下記記事参照 ログ管理 | LTSV | Ruby on RailsのログをLTSV形式に変更Comments http://d.hatena.ne.jp/tbpg/20130…

Ruby on Rails | Rails4 | before_filterからbefore_actionへの変更

概要 Rails4 before_filterからbefore_actionへの変更 内容 Rails4からbefore_filterなどの命名がbefore_actionへの変更になりました。 サンプル controller/application_controller.rb class ApplicationController < ActionController::Base protect_from_…

ログ管理 | LTSV | Ruby on RailsのログをLTSV形式に変更

概要 Ruby on RailsのログをLTSV形式に変更 詳細 Ruby on RailsのログをLTSV形式に変更します。 サンプル ロガーをオープンクラスで拡張してinitializersに保存します。 /config/initializers/logger.rb class Logger def format_message(level, time, progn…