2010-07-20 27 views
0

在我的.html.erb文件中,我有很多信息要显示。我用一个简单的实现这一点:(使用蓝图CSS)减少HTML复制的轨道方式

<% for event in @user.events %> 
<div class="span-5 border">Descriptor:</div> <div class="span-5 last"><%=h event.foo%></div><br/> 
<% end %> 

我怎样才能让这个我可以调用一些功能将会使信息的一部分,我会通过它只是描述符(字符串文字)和事件的方法(在这种情况下为“foo”)。

我是新来的铁轨,我认为这可以使用部分渲染来完成,但我不完全确定。

感谢

回答

1
render :partial => 'event', :collection => @user.events, :locals => {:descriptor => 'descriptor', :method => 'foo'} 

如果您使用的是最近的轨版本的简写版也将工作:

render @user.events, :locals => {:descriptor => 'descriptor', :method => 'foo'} 

在您的局部

<div class="span-5 border"><%= descriptor -%></div> <div class="span-5 last"><%=h event.send(method) %></div><br/> 
+0

_event.erb的外观如何? – Reti 2010-07-20 07:45:22

+0

嗨Reti。对不完整的描述,我编辑了答案。这应该工作,但如果没有,让我知道。 – mark 2010-07-20 11:09:32

+0

感谢您的帮助。我在 之下的'<%for event in @ '<%= render @ user.events,:locals => {:descriptor =>'descriptor',:method =>'foo'}%> user.events%>'和你在正确位置说的部分内容,但现在说'描述符'是未定义的。我也尝试了你提供的其他渲染,但它说这个事件是未定义的。这是怎么回事? – Reti 2010-07-20 22:10:52

0

您可以使用谐音。 它的优点是它使代码DRY.Also可以通过Ajax回调替换特定的div。 将文件名称前缀为'_'的部分保存为_test.rhtml

render :partial => 'test', :layout => false