2012-02-13 13 views
1

私が正しいアプローチを取っているかどうかは不明です。私は、クエリのバリエーションのための様々なコントローラのアクションを設定し、それぞれの関連するビュー/テンプレートを作成しました。すべてが同じテンプレートのコピーを使用するので、個々のビューを持つことは生産的ではないようです。レイアウトを変更する場合は、各テンプレートを変更する必要があります。Rails Actions> Common view?

は、ここでの行動だ:

def schedule #routes to /products/schedule.html.erb 
@products = Product.where('release_date >= ?', Date.today) 
end 

def active_lines #routes to /products/active_lines.html.erb 
@products = Product.where('release_date <= ?', Date.today) 
end 

私はこれらおよび更なる行動のための一般的な製品のテンプレートを持っていることを好むだろう。

答えて

0

製品の一覧を表示するアクションがいくつかあり、すべてが同じ「ルックアンドフィール」を持っている場合は、1つのテンプレートを使用する必要があります。テンプレートを指定するには、renderを使用します。

def schedule 
    @products = Product.where('release_date >= ?', Date.today) 
    render 'products/list' 
end 

def active_lines 
    @products = Product.where('release_date <= ?', Date.today) 
    render 'products/list' 
end 

は、単一のテンプレートproducts/list.html.erbの代わりに、2つの以前のテンプレートを作成します。

+0

恐ろしい!それは治療に役立ちます。ありがとう! – Raoot

0

cell componentsが好きかもしれません。

+0

ありがとうございました。私はこれをチェックしますが、レンダリングは私が何をしたかのようです。 – Raoot

+0

ええ、それは生の方法ですが、それはそのテスト可能で再利用可能な方法ではありません。とにかく、あなたが何かをすばやく探していたら、他の答えは良いです。 – lucapette

+0

ええ、すぐにすぐに動作します....しかし、私は間違いなくあなたのヒントをチェックアウトします。 – Raoot

0

あなたの意見がどのくらい単純かに応じて、baldrickが示唆しているアプローチを使うことができます。また、ネストされたレイアウトを設定することもできます。 Rails Guides for Layout and Rendering

これにより、既存のアプリケーションレイアウトを、その中にネストされたレイアウトで使用することができます。これにより、それらの間に一連のレイアウトを再利用することなく、各ビューをカスタマイズすることができます。

+0

甘い、これは私がする必要があるいくつかの他のもののために有用と思う。レールを愛することは大好きですが、PHPから調整するのに時間がかかります。 – Raoot