在一个视图中,我render @events
使用_event.html.erb
进行输出。我想在另一个区域(主页)上使用render @events
,但我希望它以稍微不同的方式呈现页面。我该怎么做?
答案 0 :(得分:1)
根据它们的不同,您可以使用演示者,如latest Railscast中所示。
如果差异是结构性的,那就做两个部分。视图中的少量重复是完全可以接受的,并且可能比在视图中放置逻辑更可取。 尽量抵制在你的观点中创建if语句的冲动。
答案 1 :(得分:0)
我至少看到了这个:
对于第一个选项(我将使用haml,我会简单地说):
# events.html.haml
.index= render @events
# homepage.html.haml
.events= render @events
# your css
.index { color: red; }
.events { color: blue; }
更简单的东西,我认为是@iain建议之一:
# action template
= render partial: '/events/event1', collection: @events
# _event1.html.haml
.name #{event1.name}
通过这种方式,您可以干净地根据需要制作尽可能多的不同部分,并在渲染调用上稍作重复。我同意如果可能的话,你应该避免在意见中陈述。
我强烈建议您参考guides,因为它们非常清晰易读。
Hash这里是Ruby 1.9风格,如果你使用Ruby 1.8替换collection: @events
之类的东西,比如:collection => @events
希望这会有所帮助,对于我的答案的大幅编辑感到抱歉。