8 Apr 2012

script/consoleでhelper, routing

- 下記に追記
いつのバージョンからか(少なくとも2.3.14からは)名前付きルートはscript/consoleを立ち上げた時点でlink_to はhelperというActionView::Baseのインスタンスからアクセスできて、ダイナミックルートはappというActionController::Integration::Sessionのインスタンスからアクセスできるようになっていました。

http://blog.p.latyp.us/2008/03/calling-helpers-in-rails-console.html


--------------------------------
- コンソールで名前付きルート
Testing Named Routes in the Rails Consoleからまんま拝借。

include ActionController::UrlWriter 
default_url_options[:host] = 'whatever'


default_url_optionsは名前のとおり、/parent_controller/:host/child_controller/:idといった定義に対して以下の用にコンソールで名前付きパスのデフォルトのオプションを指定してくれる。
action_controller_path(:id => 23)
=> "/parent_controller/watever/child_controller/23"
belong_toなんかでリソースがネストしてる時に便利。

rs = ActionController::Routing::Routes
rs.recognize_path action_controller_path(:id => 23), :method => 'GET'
とかで、params => {:host => 'whatever', :id => '23'}とかがパラメータとして渡ってくるはず。試してない。


- Helperをコンソールで
  include HelperYouWantToRun #使いたいhelperをincludeする。
  helper.method_you_want_to_run