在Ruby on Rails应用程序中为视图重复显示代码的位置?

时间:2010-07-20 09:11:06

标签: ruby-on-rails

我有一个Note模型,它可以包含图像链接附件(linktype =“image”或某些文本(linktype =“text)。当我显示注释时,显示方法会根据链接类型而改变。一个例子是:

<% @notes.each do |q| %>
    <h2 class="title"><%= q.name %></h2>
    <% if q.linktype == "image"%>
        <img src="<%= q.link %>" />
    <% elsif q.linktype == "text"%>
        <%= q.text %>
    <% end %>
<% emd %>

我必须在我的网站中以几个不同的视图显示注释,因此我不想多次重复查看代码,而是希望将它放在一个地方并从不同的视图中引用它。

我应该在应用程序助手中执行此操作吗?如果是这样,我是否将显示代码(如上面的代码)直接放入帮助程序中,还是有更好的方法?谢谢你的阅读。

1 个答案:

答案 0 :(得分:4)

对于与某个实体无关的重复视图代码(不是,例如,users/show.html.erb)创建一个小部件文件夹并在那里写下你的部分。我把我的小部件导航栏等等。

/app/views/widgets/widget1.html.erb
/app/views/widgets/widget2.html.erb
...

# some_view.html.erb
<%= render :partial => 'widgets/widget1' %>

以抽象的方式,我在助手和这种局部之间做出区分:

  • 帮助器用于与视图相关的逻辑(以特殊方式迭代等)
  • 查看窗口小部件是数据图像,它们只是将数据洞与数据匹配