Rails

郵便番号から住所をセット

郵便番号を入力して『住所検索』ボタンを押したら Ajaxでサーバに問合せにいって、コントローラで郵便番号辞書から住所を引っ張って返すというのを作ろうと思って、「待てよ、そういうのって巷に溢れてるんじゃないか?」と思ってググったら、すごくいい Jav…

jQueryのカレンダーツール

Extended-Bort をベースにした Railsで開発しているので、いままで使っていた prototype.jsベースのカレンダーが使えず(使えないわけじゃないんですが、そのためだけに jQueryのほかに prototype.jsも入れるなんてどうよ、ということです)、jQueryベースのカ…

削除リンク

Railsでレコード削除のときのリンクってどう書くんだっけと迷ったのでメモ。 正解 <%= link_to '削除', @org, :method=>:delete, :confirm=>'よろしいですか?' %>HTMLに展開されるとこんな複雑怪奇なものになります。(見やすいように改行が入れてあります)

login_requiredでベーシック認証ダイアログ

Railsで、少し古いユーザ認証プラグイン(Restful Authentication)を使っていて、ブラウザが IEか Opera、WebTVで、『before_filter login_required』に引っかかったときのこと。超限定的な話題。 状況 例えば、Usersコントローラの showにアクセスがある場合…

InvalidAuthenticityToken

Railsが生成しない Formからアクションへ入るときなどに InvalidAuthenticityTokenがでるときの対処。例えば、トップページは静的に Formを書いておいて、そこから /sessions/create に入るなど。書いておかないと毎度毎度忘れてしまうので。 Controller cla…

translation missing:が出たとき

Rails2.2.2で、こんな(↓)エラーが出たとき、どこをチェックすればいいかのメモ。 translation missing: ja, activerecord, errors, template, header translation missing: ja, activerecord, errors, template, body config/locales/ja.yml 『』あたりで I1…

クラスのメソッド

クラスメソッドとインスタンスメソッドがわかっているようで、いつの間にかあやふやになってしまうので後で迷わないように整理しておく。 インスタンスメソッド class User ActiveRecord::Base def not_using_openid? identity_url.blank? end end User.new.…

コントローラとヘルパでメソッドを共有

コントローラとビューで同じメソッドを使いたいことがわりとあります。Validationとか文字列変換とか。そういうとき、コントローラ部(application.rb)に置くか、ヘルパ部(application_helper.rb)に置くか悩むところですが、メソッド自体はたぶん軽量なので(…

submit_tagの :disable_withオプション

Rails2.1.0で動いていたフォームの挙動が、Rails2.2.2でおかしくなったので調べてみたら、Actionpackの問題(バグ?)だったというオチ。 現象 まず、『:disable_with => '登録中です...' %>』というコードがIE8(7,6も同じだと思う)でエラーになります。 『hid…

ActiveSupportのHash拡張

認証系のソースを読んでいると『options.reverse_merge! :title => ip_addr』というのが出てきて、こんなの Rubyにあったっけと思って調べたら、やっぱ Rubyにはなくて ActiveSupportのクラス拡張でした。せっかく調べたのでまとめ。 Hash#reverse_merge, Ha…

jQueryで link_to_remoteを使う

特に強い動機があったわけじゃないんですが、Extended-Bort をベースにした Railsで開発を始めてしまったので、必然的に prototype.js じゃなくて jQuery.jsに移行することになりました。 で、prototype.js環境のものをポツポツと移行していったんですが、li…

エラーのとき fieldWithErrorsが突っ込まれる

ActiveRecordのValidationでエラーになると該当箇所に<div class="fieldWithErrors">が勝手に突っ込まれます。これはこれでありがたいのですが、<div>で突っ込むことになっているため、勝手に改行されて入力フォームのレイアウトが崩れるのが玉に傷。突…

update_attribute!はない

update_attribute、update_attributes、update_attributes!はありますが、update_attribute!はありません。 違い update_attributeは Validationなしの save。update_attributes(!)は Validationあり(普通)の save(!)。!が付くとエラーのとき、例外があがり…

url_escape()の使いどころ

入力フォームから別のアクションにリンクでリダイレクトするとします。このとき入力フィールドの値を持っていきたいんですが、リダイレクトすると paramsはクリアされて持っていけないと。ちょっと汚い手ですが、こういうことをよくやります。 link_to '■ パ…

migrateでのintegerの扱い

2009年はエコの年なので(いま決めました)、もったいないを重点的に追求していきます。まず手始めに、DB(MySQL)で安直に int(11)を使っているケースを弾劾します。 Rails2.1.0の場合 class CreateTests ActiveRecord::Migration def self.up create_table "te…

1対多のときの順序

has_many関係にあるときの「多」の方に順序がついている場合、つまり明細行を表示順でアクセスしたいときなどに、これまで findしてからいったん Arrayに入れて表示順で sortして、みたいなことをやってて「ほんとにみんなこんな面倒くさいことやってんのか…

Mailが送れなくて焦った件

「Mailが送れなくて焦った」ということがあったのですが、物語風に頭から書いていってたところ、参考にしようとして見たページのFlashのせいで IE(7)が丸ごと落ちて、はてなのバックアップも機能してなくて、ちょっと不貞腐れているので箇条書きします。 Ubu…

の不可思議なエラー

NetBeansで Railsを書くようになってから、事前(実行前)にエラーや警告がわかるようになってすごく助かるんですが、jsの「filter:alpha(opacity=75);」を「予期しないシンボルが見つかりました:"="」とするのはどうにかならないでしょうか? ということでは…

Rails(2.1.0)のtimezone

Rails(2.2.2)が11/21にリリースされたのはわかっていますし、インストールも終わっているんですが、Rails(2.1.0)の話です。 timezone config/environment.rbというファイルに config.time_zoneという指定があって、これを'Tokyo'にすると幸せが来そうな感じ…

Railsの特定バージョンをフリーズ

先日、Extended-Bortを入れてみようと思い立って、いろいろと試行錯誤していたのですが、Extended-Bortは Rails 2.2.0インクルードで、2.2.0では「config.i18n.default_locale = :ja」を指定するとエラーになるので、これを 2.2.2にすべく、勢いで Rails 2.2…

NetBeansのインストール

子供の入院や自分自身の風邪やなんやらでずいぶん間が空いてしまったので、リハビリを兼ねて最近 6.5が出た NetBeansをインストールしてみることにします。 JDKのインストール JDKはインストールしておいた方がいいそうです。 http://java.sun.com/javase/ja…

日時(DateTime)のデフォルト

Railsの DateTime型を使っていて「なんで日付の標記が YYYY-MM-DD やねん!」とイラっときたこと、ありませんか? 私はよくあります。 なにもしない場合 PS C:\home\www\3n10> ruby script/console >> DateTime.now => Fri, 24 Oct 2008 05:56:28 +0900 >> D…

IEでのURLエンコード

メールアドレスを変更するため、メールを使ったアクティベーションを行うとします。具体的にはこういう手順です。 ユーザが新しいメールアドレスを入力 アクティベーションコードとメールアドレスをURLに入れてユーザへメール ユーザがメール本文のURLをクリ…

自分のRailsプロジェクトで使っているjsライブラリ

いま書いてるRailsプロジェクトで使っているjs(JavaScript)ライブラリの一覧(順不同)です。詳しい説明、使い方は時間ができたらそのうち書きます。 フォームの入力エラーを吹き出しで教えてくれる JavaScript フォームの入力エラーを吹き出しで教えてくれる …

application.html.erbが適用されなくてちょっと焦る

application.html.erbをカリカリとチューンして上部にかっちょいいメニューを出したりして悦に入ってたら、あとから追加したモデルの画面に、application.html.erbが適用されなくてちょっと焦りました。 どういうこと? $ ruby script/generate scaffold mem…

RailsログのANSIカラーエスケープシーケンスを除去

script/serverで Mongrelや WEBrickを動かしていると画面にログを書いてくれるわけですが、Windowsの PowerShellなどで動かしているとこの画面みたいになって、すごくウザイです。これを止めたいと思います。 やり方 $ e config/environment.rb config.activ…

Sexy Forms in Rails

http://rubypond.com/articles/2008/07/16/sexy-forms-in-rails こんな超セクシーな Formが簡単に作れるそうです。プラグインになっています。 script/plugin install git://github.com/rubypond/semantic_form_builder.git あとで試してみます。

link_to で画像にリンクを張る

文字列はいいけど、画像にリンクを張るのってどうやるんだっけと思ったのでメモ。 link_to と image_tag そのまんまでした。 png', { :border => '0', :alt => '新規登録'}), new_user_path %> link_toに image_tagを渡すだけ。「:border => '0'」にしている…

*_field_tag にオプションを指定する

久々に Railsに触って、ずいぶんといろんなことを忘れているので、そうした Tipsを記録しておきます。 text_field_tag と password_field_tag text_field_tag と password_field_tag にフォーカスが移ったら、フィールドの背景色を変えるようにしたい。 'off…

Windowsで gitを使う

Railsのプラグインが githubで提供されることが多くなって、Windowsでも gitが使いたいなぁということで少し調べてみました。 こういうこと(↓)をやるときのためです。 $ ruby script/plugin install git://github.com/technoweenie/restful-authentication.g…