2012-02-24 3 views
0

を通過せずにパーシャル内からレンダリング、私はテンプレートごとに別々の部分をレンダリング:パーシャル以内私のヘルパーメソッド内のローカル変数

structure="" 
if(@page.theme_set = 1)       #line 1 
    render :partial => "first_theme.html", :locals => {:structure => structure} 
else 
    render :partial => "second_theme.html", :locals => {:structure => structure} 
end 
concat(structure)        #line 2 

、私はこれを行います。

<% structure << header %> 
<% structure << content_for_first_theme %> 
<% structure << footer %> 

3つはすべてヘルパーのメソッドです。しかし、私が行1と行2を部分に移動すると、構造はレンダリングされません。部分変数にローカル変数を初期化して渡すのではなく、部分変数内からレンダリングしたいと思います。どこが間違っていますか?

答えて

0

もっと詳しく説明してください。私はこの情報ではっきりしていません。私はあなたが構造上のhtml文字列を見たいと思っていることを理解しました。試してください<%= raw structure %>。私はあなたの質問に答えたかどうかわからない!

0

おそらく私が読んだ最も混乱の質問の一つが、あなたが動いて得るのを助けるかもしれないここにいくつかあります:

まず、あなたの状態は常にtrueに評価される場合は、二重の等号を使用します(= =)。ビュー(部分)で何かを表現しようとしている場合

if(@page.theme_set = 1) #this will always evaluate to true, use double equals (==) to find equality. 

次に、あなたはERBタグに<% =%>

を等号を使用しない限り、何も表示するつもりはありません
<%= structure << footer %> 

最後に、これをすべて同じローカル変数で行い、パーシャルへの参照を渡そうとしているようです。この場合、単にインスタンス変数@ structureのを使用するだけで十分です。コントローラ、ビュー、ヘルパーが利用できるようになり、渡す必要はありません。

関連する問題