Ajaxの処理をRailsでするときはControllerに

と書いてたんですが、いちいちブロック引数に format を使って処理するのは無駄な気がしたので一行で書ける方法を調べてみた。

解決策

でOKでした。

な書き方もOKなようです。

参考

respond_to (ActionController::MimeResponds::InstanceMethods) – APIdock


開いてるファイルをそのまま実行できるsmart-compileでGemfileを開いてたらbundle installを実行したかったのでやり方を調べてみました。

設定方法

どうやらsmart compile は自動的にコマンドの実行ディレクトリをファイルがある場所に移動してくれるようなので単純に Gemfileというファイル名とbundle installのコマンドを他のファイルと同じように紐付ければOKのようです。

もちろん ruby や php を使ってなかったら該当行は必要ありません。

使い方

これで Gemfile を開いて C-c C-x するとこんな風に bundle install が実行されます。


Railsでこんなdeprecatedの警告が出てきたので対処方法を調べた。

対策

でOK, locale validation をきちんとするなら true、どうでも良いならfalseらしい。よくわかんない。

参考

ruby – Rails I18n validation deprecation warning – Stack Overflow


Zurb-FoundationとかTwitter bootstrapを使ってると、アイコンをリンク内に含めたくなったりしますよね。こんな感じに

でもこれをそのまま link_to で囲んで

とすると<i>タグがHTMLエスケープされて悲しい事態になるんです。

対策

なのでそういう時は link_to さんはブロックが取れるのでブロックを使って処理しましょう。ブロックの返り値がリンクのテキストになります。

ちなみに button_to も同じような関数なのでこういう風にかけます。

これ知らない時に必死にHTMLエスケープされないために何をすればよいのかを探しまくったのは今では良い思い出でもなんでもありません。時間返せ。

参考

ruby on rails – link_to in helper with block – Stack Overflow


そのまま unique 条件付の index を追加しようとするとエラーになるので
まず既にある index を削除してから追加しましょう。

参考

ruby on rails – How to add unique constraint to already existing index by migration – Stack Overflow


RailsのModelは常に単数名詞、そしてControllerはその名詞の複数形という規則がありますが、Modelが”Child”などの不規則変化名詞だった時にController名はChildrenなのか、Childsなのかがわからなかったので調べました。

答え

プログラム的には当然簡単に処理できるChildsだと思ったけども実際はちゃんと不規則変化にも対応してるらしくChildrenが正解です。

その他の不規則名詞

他の不規則名詞は
https://github.com/rails/rails/blob/4-0-0/activesupport/lib/active_support/inflections.rb

に載っているんですが、

zombieって不規則名詞なの…?

cow→kineの変化はそもそも英単語がわかりませんでした、、

Zombieが不規則名詞の理由 ([2013/12/14] 追記)

単数形から複数形への変化は規則通りですが、複数形から単数形への変化 zombies -> zombie が不規則で、規則通り変化させてしまうと zombies -> zomby になってしまうから不規則名詞らしいです。英語は難しいですね。

情報元

Model and Controller's naming rule for irregular noun in Rails – Stack Overflow


rails new hoge

とすると

expand_path': non-absolute home

というエラーが出てしまって「Windowsだしなあ。」と諦めかけてたけど、このhomeというのは環境変数のHOMEのことらしく、確かにcygwinを使う時のためにHOMEに /cygdrive/ から始まる値を入れてたのを思い出したので環境変数 HOME を削除してみたら動いた。

ちなみに irb もHOMEに入ってる値によっては動かないらしい。

参考

expand_path': non-absolute home
http://devnet.jetbrains.com/thread/437313