2012-04-25 2 views
2

多くの機能を共有するコントローラがあり、それらの間で同様の機能を共有する方法があるのだろうかと思います。異なるコントローラ用の部分的なレール

= link_to 'Edit', dvd_path(dvd), :class => 'btn' 

コントローラの間で変化する唯一のものではなく、DVDの、オブジェクトである場合は、それは本やゲームのようになります。この例

。だから私は、コントローラの正しいパスを使用してそれぞれを書き直すことなく部分的に作成する方法がなければならないと考えている。オブジェクトを送信する必要はありません。

アイデアありがとうございます。

編集

@defaye:私がやろうとしていることは、私は上記の持っているコードを再利用し、7かそこらの異なるコントローラに適用されます。 上記のコードはリンクとパスの束の一例であり、常に同じであり、変更されるのはdvd_path(dvd)がbook_path(book)などになることだけです。

私は最も単純です、それを行うより簡単な方法。

実際、複数のコントローラを扱うのと同じ視点を持つことが可能かどうかは、今のところ似通っているのでしょうか?これは素晴らしいだろう!

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

+1

私はあなたがそうでなければ、それはあなたがすでに(私はこの質問を読んで理解して何から)知っていることを示唆するためにあまりにも魅力的だ避けたいものの中に加えるべきだと思うのため申し訳ありません – Jonathan

答えて

0

コードがいくつかの方法にすぎない場合は、部分的な処理は必要ありません。ヘルパーがあなたを助けることができます。

例を示します。 ApplicationHelperで定義することができます。

# application_helper.rb 
def link_to_edit(object) 
    link_to('Edit', polymorphic_path(object, :action => 'edit'), :class => 'btn') 
end 

そして、あなたのビューで

= link_to_edit(object) 
+0

以前の記事では、 'module ApplicationHelper'をファイルの先頭に含めなければならないのか分かりませんでした。今それは動作します。 – kakubei

+0

好奇心から、明示的にオブジェクトを送信せずにそれを行う方法はありますか?クラスがそれ自体を認識すべきではないか? – kakubei

+0

また、このアクションは機能しません: 'url_for(:id => object、:action => 'destroy')'これはgames /:idに変換され、代わりに 'show'アクションを呼び出します。 'destroy'アクションを呼び出す正しい方法は何ですか?ありがとう。 – kakubei

関連する問題