Ruby blocks, Procs and lambdas

Rubyのブロックを使いこなせるようになると、Ruby初級者を脱した感があるかなと思います。
以下の記事はRubyのブロックとProc、lambdaについてわかりやすくまとまっています。


Ruby blocks, Procs and lambdas

このあたりが理解できると、例えば、配列の処理でなんとなく使っている以下のような構文がちゃんと理解できるようになります。
[ruby]
ary = [1, 2, 3]
ary.map! {|i| i * 3 } #=> [3, 6, 9]
[/ruby]

form_helperのselectがdisabledにならない

form_helperで生成したselectは、オプションにdisabledを指定しても反映されません。
disabledにしたい場合には、HTMLオプションに指定します。
[ruby]
<%= f.select :content, options, {}, :disabled => true %>
[/ruby]

参考: RUBY ON RAILS – DISABLING A SELECT TAG USING THE SELECT HELPER

options_for_selectで、disabledを指定することもできますが、あまりこちらは使わないかも
http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/options_for_select

Rails 自動生成されるパス用メソッド(Named Path)まとめ

リソースのCRUDについては、Rails Guildの2.2 CRUD, Verbs, and Actionsにまとめられています。

よく使うところを抜粋してまとめてみます。

普通のリソース

resource :photos
HTTP Verb Path action Named Helper
GET /photos index photos_path
GET /photos/new new new_photo_path
POST /photos create photos_path
GET /photos/:id show edit_photo_patth(@photo)
GET /photos/:id/edit edit photo_patth(@photo)
PUT /photos/:id update photo_patth(@photo)
DELETE /photos/:id destroy photo_patth(@photo)

resourcesに独自のパスを追加

resources: :posts do
  comment "/comment", on: :collection
end

このときのNamed パスは

comment_posts_path

 

namespeceを使った場合

namespace :admin do
  resources :posts, :comments
end
HTTP Verb Path action named helper
GET /admin/posts index admin_posts_path
GET /admin/posts/new new new_admin_post_path
POST /admin/posts create admin_posts_path
GET /admin/posts/:id show admin_post_path(:id)
GET /admin/posts/:id/edit edit edit_admin_post_path(:id)
PUT /admin/posts/:id update admin_post_path(:id)
DELETE /admin/posts/:id destroy admin_post_path(:id)

ActionMailerをsendmailで動かしたい

Rails4
http://guides.rubyonrails.org/action_mailer_basics.html#example-action-mailer-configuration

Rails3.2
http://guides.rubyonrails.org/v3.2.13/action_mailer_basics.html#example-action-mailer-configuration

[ruby]
config.action_mailer.delivery_method = :sendmail
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
[/ruby]

sendmailのテスト
[bash]
$ /usr/sbin/sendmail hoge@examle.com
Test mail
[/bash]
[Ctrl+D]で送信