在 Ruby on Rails 应用程序中,在哪里放置视图的重复显示代码?

ben*_*ben 1 ruby-on-rails

我有一个注释模型,它可以包含图像链接附件(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 %>
Run Code Online (Sandbox Code Playgroud)

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

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

cly*_*yfe 5

为了重复与某些实体无关的视图代码(例如,不是users/show.html.erb),创建一个小部件文件夹并在其中写入您的部分内容。我放入了小部件导航栏等。

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

# some_view.html.erb
<%= render :partial => 'widgets/widget1' %>
Run Code Online (Sandbox Code Playgroud)

以抽象的方式,我区分了助手和这种部分:

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