2016-03-25 13 views
0

これはかなり簡単ですが、これに対する回答がある場所を見つけることができません(ルートで表示されるものはすべてビュー内で発生します)。ルートパスを文字列に変換する

出力をビルドするためにコントローラへのコールバックが必要な第三者の宝石を使用しています。

私のコールバックでは、フルパスで文字列を返しています。しかし、どのように私はそれを文字列に変換するルートのパスを得ることができますか?

ルート例:

get 'edit-it/:id', to: 'controller#action', as: :edit_it 

コントローラコールバック:これは、大幅にバージョンを簡略化されているが、一般的に、私は見つけることができないよう何

def button_output 
    # TODO: How to pass route to string with the id I need of the current 
    # object in callback. 

    id = 84848484 

    # I've tried (and none seem to work) 
    # send(:edit_it_path) 
    # :edit_it 
    # :edit_it_path(id) 
    # :edit_it(id) 
    # edit_it_route = edit_it(id) # And combo of all those above 

    "<a href=\"#{route_path_goes_here_with_id}\">Edit</a>".html_safe 
end 

何か不足していますか?

もう一度おねがいします!

答えて

0

idパラメータ受け入れるようにルート設定を更新します。

get 'edit-it/:id', to: 'controller#action', as: :edit_it 

あなたはまた、idがあなたのルートにする必要がありますどのように制約を追加することができますが、例えば数字のみを許可する:

"<a href=\"#{edit_it_path(id)}\">Edit</a>".html_safe 

または(ビューファイルで)、

<%= link_to 'Edit', edit_it_path(id) -%> 

とあなたのコントローラで:

link_to('Edit', edit_it_path(id)) 
+0

get 'edit-it/:id', to: 'controller#action', as: :edit_it, constraints: { id: /\d+/ } 

を次にとしてそれを使用しますOps、私は私の質問を更新しますが、私は忘れていました:そこに...ちょうどそれを忘れました。 – Sean

+0

上記の(コントローラ内の)メソッドを実行すると、次のメッセージが表示されます:未定義メソッド 'edit_it_path ' – Sean

+0

これで問題なく動作しましたが、何らかの理由でRails.applicatrion.routes.url_helpersをコントローラに追加する必要がありました?!?!私はこれがActiveRecord :: Baseで既に定義されていると思った? – Sean