2013-02-21 5 views
10

コントローラーからのビューに通知を渡す必要があり、通知にもリンクを作成できるようにする必要があります。コントローラーでlink_toを作成する

マイコントローラ:

format.html { redirect_to purchase_order_headers_path, notice: 'PO already has RR with RR ID: ' + rr.rr_id + ', void RR first.' } 

がその上にユーザーがクリックはそれのページに移動しますとき[rr.rr_id]はとてもリンクになりますので、私はそれを行うことができます任意の方法はありますか? link_toはコントローラに接続した場合、エラー"undefined method"を返します。

ありがとうございました。

答えて

22

レール3を使用している場合は、コントローラにview_context.link_to(...)を使用できます。

UPDATE:format.htmlコード

format.html do 
    redirect_to purchase_order_headers_path, notice: "PO already has RR with RR ID: #{view_context.link_to(rr.rr_id, receiving_record_header_path(rr.id))} void RR first.".html_safe 
end 
+0

なぜ 'view_context.link_to()'を使うのですか? 'RR-1301-0001'を教えてください。しかし、私は 'RR-1301-0001' – ksugiarto

+0

である必要があります。あなたはlink_toに渡す引数を使用する必要があります。たとえば、あなたが望むリンクを 'view_context.link_to( 'RR-1301-0001'、 '/ receiving_record_headers/1')'と書くことができます。あなたはもちろん、URLの名前付きルートを使用することができます:) – jvnill

+0

それはあなたのおかげで、結果 'POはすでにRR ID:+" RR-1301-0001 "+、ボイドRRの最初の'、ハハ私は間違っている?これは私の最後のコード 'format.html {redirect_to purchase_order_headers_path、注意: 'POは既にRR IDを持つRRを持っています:' + ActionController :: Base.helpers.link_to(rr.rr_id、receiving_record_header_path(rr.id))です。 、最初にRRを無効にする。 } ' – ksugiarto

5

で使用#{ActionController::Base.helpers.link_to 'rr.rr_id', '/url'}.html_safe

あなたのコントローラーでリンクを作ること。 文字列の表示をhtml(エスケープされずに)にするには、文字列のhtml_safeメソッドを呼び出します。

+0

これをHTMLタグサー、私はそれについてそれを混乱させる。申し訳ありません、私は一種のレール初心者です。とにかくありがとう:) – ksugiarto

+0

実際に私が 'format.html {redirect_to purchase_order_headers_path、しようとすると、最終的な結果: 'POはすでにRR IDを持つRRを持っています:' + ActionController :: Base.helpers.link_to(rr.rr_id、receiving_record_header_path(rr .id))。html_safe + '、最初にRRを無効にします。 } 'また、私は@ jvnill答えにコメントするようなhtmlの同じ結果、どこで私は間違っていますか? – ksugiarto

関連する問題