Ruby on Rails(2.0.2)について質問です。

アクションビューのlink_to(要するにurl_for)ヘルパーで生成するリンク(URL)を絶対パス(http://~)として一括で指定するうまい方法はあるのでしょうか?
各ビューのlink_toなどで個別に:hostを設定する方法は知っています。
独自のヘルパーを作って、オプションに:host=> "hogehoge"と:only_path => falseを設定する方法は思いつきましたが、ビューのコードは書き換えたくないです。(数が増えると面倒なので)
コントローラにdefault_url_optionsを指定すると出来そうだと思ったのですが、
url_helperのソースを見てると:hostが指定していないと:only_pathが強制的にtrueにされてしまい、ダメでした。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/09/10 15:37:25
  • 終了:2008/09/11 18:16:58

回答(1件)

id:znz No.1

znz回答回数193ベストアンサー獲得回数252008/09/10 16:31:33

ポイント60pt

app/helpers/application_helper.rbで以下のようにデフォルトのオプションを変更してしまえばよいのではないでしょうか?

module ApplicationHelper
  def url_for(options={})
    options = {
      :host => "example.jp",
      :only_path => false,
    }.merge(options)
    super(options)
  end
end

http://www.ruby-lang.org/ja/man/html/Hash.html#merge

id:tak-n

ありがとうございます。

optionsがHashでないときにエラーが出たので、

if options.is_a? Hash

を追加してうまく動きました。

2008/09/11 11:22:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません