2016-09-08 6 views
0

3つの異なる部分があり、正確な製品(データベース内のレコード)に応じて異なる場所で表示されるようにします。いくつかの製品では、私は3つのパーシャルのうちの2つを表示したいだけです。私はこれをどのように実現するのでしょうか? ありがとうございます。Rails 4はデータベース内の変数に基づいて部分的にレンダリングされます

+0

私はわからない、これはJSやCSSが必要ですまたはレールソリューションがあれば、私は何をしようとしていないが、良い方法を探している場合。これを達成する。 –

+0

正確な製品(またはデータベースのレコード)に応じて、ビューにパーシャルを表示したいので、レールを使用する必要があります。このためにコントローラメソッドを使用することができます。 – luissimo

+0

かなりの組み合わせがあります。コントローラーメソッドはどのように見えますか?ちょうどケースステートメント? –

答えて

2

カスタムロジックを使用してパーシャルをレンダリングするテンプレート(例:products/show.html.erb)があると仮定して、そのテンプレートに条件ロジックを埋め込むことをおすすめします。ここでは、私の前提の多くの例を挙げています。詳細を追加して、私は更新することができます。

まず、私は仮定していプライマリテンプレートは、あなたのshowアクションです:

# products/show.html.erb 

<h1>Product <%= @product.name %></h1> 
<p><%= @product.description %></p> 

<% if @product.is_fungible? %> 
    <%= render partial: 'products/fungible', locals: { product: @product } %> 
<% end %> 

<% if @product.is_edible? %> 
    <%= render partial: 'products/edible', locals: { product: @product } %> 
<% else %> 
    <%= render partial: 'products/inedible', locals: { product: @product } %> 
<% end %> 

そして、あなたのパーシャルは、我々はローカル変数としてproductに渡されてきたことから、その点に注意してください(そうのようになります。我々は彼らに、インスタンス変数@productを使用する必要はありません。

# products/_fungible.html.erb 

<p>This product is definitely fungible, by a factor of <%= product.fungibility %>.</p> 
+0

これは動作する1つのソリューションです。私はまた、私は変数として、テンプレートを参照してその変数との部分的な指定を使用することができますが見つかりました。 <%render partial => product.partialone%>たとえば、product.partialoneが "products/edible"の場合です。 –

関連する問題