如何根据页面更改渲染@events输出

时间:2011-10-08 20:46:47

标签: ruby-on-rails render

在一个视图中,我render @events使用_event.html.erb进行输出。我想在另一个区域(主页)上使用render @events,但我希望它以稍微不同的方式呈现页面。我该怎么做?

2 个答案:

答案 0 :(得分:1)

根据它们的不同,您可以使用演示者,如latest Railscast中所示。

如果差异是结构性的,那就做两个部分。视图中的少量重复是完全可以接受的,并且可能比在视图中放置逻辑更可取。 尽量抵制在你的观点中创建if语句的冲动。

答案 1 :(得分:0)

我至少看到了这个:

  • 使用css可以用来定位元素,隐藏其他元素,颜色等
  • 在每个模板中呈现不同的部分

对于第一个选项(我将使用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

希望这会有所帮助,对于我的答案的大幅编辑感到抱歉。