2009-05-03 16 views
0

Railsで安らかなリソースを使用して、ユーザーがクリックして問題のオブジェクトを破棄できるリンクをFlashハッシュに挿入したいと考えています。唯一の問題は、RESTfulなコントローラで動作するように生成されたリンクを取得できないということです!HTTP動詞を使用してコントローラ内でリンクを生成する

まず私はのlink_toは、

次の検索がかかった

url_for :controller => 'reservations', :actions => 'destroy', :method => :delete 

なurl_forたコントローラでは使用できませんActionViewでヘルパーメソッドであるため、動作しませんでした

link_to "Change your reservation", reservation_path(@existing_reservation), :method => :delete 

これを試してみましたショーアクションに戻ります。私は私が見つけることができる2つの組み合わせを試しました。 。 。私は削除メソッドでスリップする私のコントローラ内のリンクを作成するように見えることはできません!私が生成するすべてのアクションは、showメソッドを呼び出す通常のリンク(GET)を生成します。

アイデア?

答えて

1

ApplicationController.helpers.link_to私はそれが厳密にMVCを以下だか分からないが、あなたがコントローラでヘルパーメソッドを使用できるようになります。場合によっては、必要があることがわかりました。つまり、number_to_currencyに電話してください。

その特定のヘルパーで:deleteオプションを使用すると、別の問題が発生します。それは失敗するでしょう。ソースコードを一見したところで、私は本当に即座の修正を見ることができません。

まず、可能であれば、削除リンクをそのページのどこかに置くことをお勧めします。 の場合、実際にに必要なのは、フラッシュで見ることができます。

I.e.コントローラの設定でフラッシュ:

flash[:notice] = "Flash message with a DELETE LINK in it" 

は、ビューに表示する前に、そのフラッシュを変更します。

<%= flash[:notice].gsub(/DELETE LINK/, link_to("delete", resource_path, :method => :delete)) %> 

あなたはおそらくあなた自身のヘルパーにそれを作りたいと思います。あなたが別の方法を見つけることができると確信しているようなテキストを書き込むことが気に入らないのであれば、フラッシュへのリンクを追加するだけですか?

希望するもの:)

+0

それを愛する!ありがとう! – BushyMark

0

パスを使用する代わりに、オブジェクト自体だけを渡すようにしてください。

link_to "Change your reservation", @existing_reservation, :method => :delete 
+0

コントローラで「link_to」メソッドを使用することはできません。 。 。その唯一のビューのために。 – BushyMark

+0

ええ、そうです。申し訳ありませんが、私はあなたのメッセージを十分に読んでいませんでした。ビューへのリンクをハードコーディングしていないと、私はこの問題にかなり困惑しています。 – Schrockwell

関連する問題