[Ruby on Rails] view で現在のコントロール名、アクション名を取得する方法
- 2013 2/17
Ruby on Rails で、view で現在のコントロール名、アクション名を取得する方法をメモ。
controller.controller_name controller.action_name |
Ruby on Rails で、view で現在のコントロール名、アクション名を取得する方法をメモ。
controller.controller_name controller.action_name |
タイトルでほぼ終わってますが。
入力補助に jQuery のライブラリを使う場合、下記のようにするのが手っ取り早そう。
・日時の入力フォームは2つに分ける
・年月日のフォームには Datepicker を使う
・時刻のフォームには Timepicker を使う
年月日と時刻をひとまとめにする場合、良さそうな jQuery ライブラリが無かった。
Ruby で、時刻のフォーマットをチェックする正規表現をメモ。
Rails でバリデーターとして使う場合はこんな感じ。
# 時刻が正しい形式かチェックする def validate_format_for_time return if time.blank? unless time =~ /^([0-1][0-9]|[2][0-3]):[0-5][0-9]$/ errors.add(:time, "を正しい形式で入力してください。") end end |
RSpec で、コントローラーのテストで Ajax リクエストを送るには xhr を使えば良いらしいです。
■ Ajax GET
xhr :get, :index |
■ Ajax POST
xhr :post, :create, id: 1 |
下記のような感じで使えます。カンタンですね!
describe "Ajax GET 'index'" do it "returns http success" do xhr :get, :index response.should be_success end end |
・[参考]:ruby on rails – How do you test an AJAX request with RSpec/RoR? – Stack Overflow
Ruby on Rails で、validates numericality で nil の場合、チェックしないようにするには allow_nil: true を指定すればOKです。
class Article < ActiveRecord::Base validates :page_view, numericality: true, allow_nil: true end |
allow_nil: true を指定しない場合は、未入力でも「xxx は数字で入力してください。」というバリデーションエラーになってしまいます。
・[参考]:validation – custom error message for valid numericality of in rails – Stack Overflow
Ruby on Rails の .build や build_xxx についてメモ。
build メソッドはググれば見つかるけど、「build_xxx って何だ?」と思って調べてみました。
build_xxx は has_one でアソシエーションが定義されている場合に使える構文らしく、
tag = @article.tag.build |
と書くのを、
tag = @article.build_tag |
という風に書くこともできるみたいです。
ちなみに build は、親モデルに対する外部参照キーを自動でセットしてくれる点が new メソッドと違って便利!
詳しくはこの辺を読む。
・build (ActiveRecord::Relation) – APIdock
・Ruby on Rails 備忘録 – Ride On Rails » Blog Archive » ActiveRecord の new と build の違い
Ruby on Rails で、複雑な検索フォームを簡単に作成することができる「Ransack」というGemが便利なのでメモ。
Twitter や Facebook などのソーシャルボタンを横に並べて設置するためのスニペットをメモ。
■ HTML
<ul class="socialButtons"> <li>Twitter Button</li> <li>Facebook Like Button</li> <li>Google+1 Button</li> </ul> |
■ CSS
●横並び
.socialButtons { overflow: hidden; } .socialButtons li { float: left; margin-right: 10px; } .socialButtons iframe { margin: 0 !important; } |
●縦並び
.socialButtons { list-style-type: none; padding-left: 0; } .socialButtons li { margin-bottom: 4px; } .socialButtons iframe { margin: 0 !important; } |
・[参考] TwitterやFacebookなどのソーシャルボタンを横に並べて設置する ‹ CSS – hostingjedi
Ruby on Rails 3.2 から追加された新機能 pluck メソッドが便利です。
・pluck (ActiveRecord::Calculations) – APIdock
こんな風に map で単一カラムの配列を作っていたのを、
blog_titles = Blog.all.map(&:title) |
pluck メソッドを使えば、こんな感じに書ける。
blog_titles = Blog.pluck(:title) |
しかも、パフォーマンスが良いということで、pluck を使わないわけにはいかない。
・Rails3.2から導入されたpluckメソッドのパフォーマンスが素晴らしい件 – (゚∀゚)o彡 sasata299’s blog
_人人人人人人人人人_
> pluck ステキ! <
 ̄Y^Y^Y^Y^Y^Y^Y^Y ̄