ruby-on-rails – DRYing rails视图:partial vs helper

栏目: Ruby · 发布时间: 5年前

内容简介:我会说这是一个很好的例子.我预留助手来生成任意动态内容.这是一个松散的描述,所以一个例子如何:我会做一个帮助器,分割一个ActiveRecord对象数组,并将它们显示为N列.在这种情况下,传递的对象的结构以某种方式被利用,以便生成内容,但内容本身并不重要.如果你想到,form_for也适合这个描述.相反,部分内容对于“静态”内容是非常好的,需要在多个页面上重复使用.例如,您将创建一个部分来渲染单个项目.部分确定特定项目的“静态”表示.

参见英文答案 > When to use Helpers instead of Partials 6

我需要关于DRYing视图代码的最佳做法的建议.

我的应用程序中有三个类(NewsItem,RssItem和BlogItem),它们使用单​​独的视图,但在其中包含类似的部分.其中一个部分是这样的:

<% if current_user %>
<footer>
  <%= marks_bar(@item) %>
  <%= favorite_button(@item, "blog_item") || delete_from_favorite_button(@item, "blog_item") %>
  <%= share_button(@item) %>
  <% if current_user.is_mine?(@item) %>
    <div><%= link_to "Edit", edit_user_blog_item_path(current_user, @item) %></div>
  <% end %>
</footer>
<% end %>

所有这三个班级几乎相等,所以我决定把它带到一个不同的地方.在这里我很困惑:我应该使用部分或帮助方法吗?

我知道帮助器主要用于将 ruby 代码与HTML分离,但在这种情况下,帮助器将如下所示:

def toolbar_for(item, type_str, edit_path)
  if current_user
    content_tag(:footer) do |b|
      marks_bar(item).to_s <<
      (delete_from_favorite_button(item, type_str) || favorite_button(@item, type_str)).to_s <<
      share_button(@item).to_s <<
      (content_tag(:div) { link_to("Edit", edit_path)} if current_user.is_mine?(@item)).to_s
    end
  end
end

所以这里几乎没有HTML代码.

你能给我建议,你认为什么方法更好,为什么?此外,这些方法中是否存在一些性能问题(例如,多个字符串连接或频繁的部分加载可能是昂贵的)? (这个程序相当高负载)

我会说这是一个很好的例子.

我预留助手来生成任意动态内容.这是一个松散的描述,所以一个例子如何:我会做一个帮助器,分割一个ActiveRecord对象数组,并将它们显示为N列.在这种情况下,传递的对象的结构以某种方式被利用,以便生成内容,但内容本身并不重要.如果你想到,form_for也适合这个描述.

相反,部分内容对于“静态”内容是非常好的,需要在多个页面上重复使用.例如,您将创建一个部分来渲染单个项目.部分确定特定项目的“静态”表示.

在我看来,你的例子更适合第二个垃圾桶.由于@item没有被操纵以生成内容,实际上它几乎不被使用.似乎这个帮手大多是其他适当创建的助手的粘贴代码(share_button和marks_bar).完美的用例为部分!

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/6848393/drying-rails-view-partial-vs-helper


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

新媒体十讲

新媒体十讲

范卫锋 / 中信出版社 / 2015-8 / 38.00元

“新媒体参谋长”范卫锋解答:媒体人如何转型?怎么创业?如何看准新媒体项目进行投资? 作为“新媒体的参谋长”,本书作者范卫锋将十余年从业亲历的经验教训、行业内幕串联成册,从定位、突破、扩张、商业模式、价值几个方面剖析新媒体策略,解密国内媒体圈转型、创业、投资的实操法则。案例信手拈来,观点鞭辟入里,打造出国内第一本由专业新媒体投资人撰写的新媒体实战兵法,涉及媒体人转型、新媒体实操、媒体公关营销、......一起来看看 《新媒体十讲》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具