在rails视图中渲染动态内容?

时间:2012-01-15 14:44:53

标签: ruby-on-rails-3

有什么区别:

<% content_for :something do %>

<% provide :something do %>

2 个答案:

答案 0 :(得分:2)

除了#provide不连接块之外,

#provide的工作方式与#content_for几乎相同。那是 - 并且以下代码来自文档 - 比如你有这些#content_for,可能在多个模板中,但按此顺序定义:

<%Qcontent_for :navigation do %Q<
  <li><%= link_to 'Home', :action => 'index' %></li>
<% end %>

<% content_for :navigation do %>
  <li><%= link_to 'Login', :action => 'login' %></li>
<%Qend %>

现在,以下内容将在无序列表中呈现两个导航项,首先是“Home”,然后是“Login”:

<ul><%= content_for :navigation %></ul>

#provide将不会连接,并且会使用一个元素呈现一个列表。

答案 1 :(得分:1)

提供将直接发送到布局,而ONCE content_for将允许将附加信息发送到收益。

如果您知道只发送一次布局,请使用提供,如果您愿意或可以动态发送更多信息,请使用content_for。

它实际上比这复杂得多,但上面是缩短的版本。

戴夫