2012-03-07 21 views
28

たとえば、 "new_work_path"という文字列を作成しました。このヘルパーをメソッドとして呼び出す必要があります。レールで経路ヘルパーを動的に呼び出す方法は?

私はsend("new_work_path", vars)を試して、多くのオブジェクトから同じ送信を呼び出しました。しかし、私はこれらのヘルパーに電話するのに適したオブジェクトを見つけたとは思いません。

object.send("new_work_path", vars)を行うには、オブジェクトをお探しですか?

これはしばらくオンラインで検索しようとしましたが、何も見つかりませんでした。もし誰かがこの光を照らすことができれば、それは素晴らしいことでしょう!

ありがとうございます!

+3

ヘルパーメソッドは、だけでなく、モデル、ビューのコンテキスト内から呼び出すことができますしてみてください。あなたはこれを実行しようとしている場所をより具体的にすることができますか?あなたが正しい文脈を持っていれば、標準の 'send'呼び出しで十分です。 – tadman

+0

私はこれをapplication_helperで実行しようとしていますが、標準のルートヘルパー呼び出しが適切に機能します。 – gtr32x

+3

あなたは何を得ているのですか?あなたは例を投稿できますか? 'new_work_path'を直接呼び出せば、' send(:new_work_path) 'は同等でなければなりません。 – tadman

答えて

34

は、それはあなたが何をしようとしてかどうRails.application.routes.url_helpers.send(...)

+0

もうまくいきます。 "ベストアンサー"に値する:) –

+1

これはうまくいきます。ネストされたリソースにリンクしたいとしましょう。あなたは 'Rails.application.routes.url_helpers.send(" new _#{@ model.class.name.downcase} _comment_url "、" #{@model.class.name .downcase} _id ".to_sym => @model)'、親 'model_id'が必要です。 – Avishai

+0

マウントされた 'Rails :: Engine'から' url_helpers'にアクセスしようとしている場合、 '' :: Engine ".constantize.routes.url_helpers.send(...) '' 'あなたの 'routes.rb'ファイルに' mount'行を追加します。 – erroric

8

私の悪いことに、@tadmanが示唆するように、私はsend(:new_work_path, args)をもう一度使ってみました。それ以前にミスタイプしている必要があります。同様に、いくつかのシンタックスシュガーを提供しているようだ

new_polymorphic_path(Work, args) 

出てすぐに作品を送ること見つける前に、私は関心のもある別の解決策を発見しました。

+0

polymorphic_pathは楽しいです、 'polymorphic_path(:foo)'や 'polymorphic_path(" bar ")' –

関連する問題