0

以下に示すように、いくつかのパーシャルをレイアウトしようとしています。

if controller == home
   render partail 0
else
   render partial 1
end

render partial 2

render partial 3

if controller == home
   render partail 4
end

render partial 5

if controller == homeその部分を3回繰り返しました。コードを「DRY」アプローチに従う方法はありますか?

4

3 に答える 3

1

配列を使用できます。パーシャルは順序付けられているため、並べ替えてからレンダリングします。

partials = [2,3,5];                     # 2,3,5 are going to be rendered regardless of controller

case controller
when home
   partials.push(0,4);                  # if it's home use 0 and 4
else
   partials.push(1);                    # if not home use 1
end

partials.sort.each { |p| render partial p }  # sort and render in order

注: この例にはさらに多くのコードがありますが、 に加えて他の条件を使用する場合は、より柔軟ですhome。コードを前もって作成すればするほど、長期的にはより多くの時間を節約できることがよくあります。ただし、これはFMcの回答と比較して読みにくいことは認めます

于 2013-06-08T20:08:04.970 に答える