为了简单起见,我们说我有类似
的东西<div class='important_class'>
<%= @model.attribute %>
</div>
想象一下important_class
div实际上是div的大型层次结构,并且有7个结束标记。现在想象我有5个视图具有完全相同的外观,除了中心的内容,我可能有@model1.attribute
,model2.attribute
等等。在这种情况下,使用局部的最佳方法是什么?
提议的解决方案1
制作名为_top_part.html.erb
和_bottom_part.html.erb
的2个部分,其中包含顶部和底部,然后在不同的视图中使用它们。代码看起来像
<%= render 'top_part' %>
<%= @model.attribute %>
<%= render 'bottom_part' %>
提议的解决方案2
在控制器级别,将一个变量传递给视图以确定要渲染的部分,它看起来像
<div class='important_class'>
<%= render @place+'_partial' %>
</div>
我之所以不喜欢解决方案2,是因为@place与部分绑定太紧密了,你可能会因为从许多不同的控制器渲染相同的视图而产生奇怪的行为。
建议?
答案 0 :(得分:0)
如果你的模特不同,你可能会这样做
<div class='important_class'>
<%= render @model %>
</div>
例如,假设您有2个模型Car
和Bus
,它会查找名为_car.html.erb
和_bus.html.erb
我不确定这是你问的问题: - \