分享 Maintainable Rails View 文章版 (長文慎入)

xdite · 2013年10月31日 · 最后由 zzz6519003 回复于 2018年04月17日 · 8587 次阅读
本帖已被管理员设置为精华贴

原投影片連結:https://speakerdeck.com/xdite/maintainable-rails-view

這其實是一個很長的系列 Talk。不過時間關係,現場我被迫卡了很多東西。

不過在寫投影片時,幾乎所有程式碼我都已經放在 Logdown 的草稿夾了。所以回台灣之後,睡飽之後有空,我就把這些東西重新整理出來了。

這些東西要說是我 Rails 生涯的 View 精華也不為過....

以下是 Maintainable Rails View 系列文目錄

第二篇的代码

<%= render_cell :user, :rencent_posts, :user => :user %>

需要改成下边这样吧?

<%= render_cell :user, :rencent_posts, {:user => @user} %>

好文章不怕长。感谢楼主。已赞。

Cool……学了好几招……

仔细看着呢,谢楼主~

请教,第一篇的 5. Tell, Don't ask 这里说到這是因為在 View / Helper 裡面被 query 的資料是不會 cache 起來的。 然后改进如下

 <% @posts.each do |post| %>
  <%= render_post_taglist(post.tags) %>
<% end %>

这个不是也在 view 里面的么?效率就高了?改进了?

因為你可以在 controller 裡面預 include :tags 先把資料撈出來。而且不容易漏

#8 楼 @xdite soga,所以重点是 controller 里面的这句?@posts = Post.recent.includes(:tags),这个例子里的那些 view 的修改其实不是重点?

我觉得有两个好处:1 是让 helper 做一些逻辑判断,2 是避免在 view 里写超过 3 个 . 的状况,比如 <%= current_user.last_post.tags %>

@mahone3297

不。view 修改是重點。不應該在 helper 裡面問資料。因為 helper 會被用很多次,helper 不會知道 controller 有沒有幫它撈。所以在設計上就應該做成撈好給他...

@xdite 建议加上 controller 里面基于权限进入不同的 view,因为 view 里面有 if-else 很大一部分原因是因为要在一个页面里面根据角色显示不同部分的内容。

https://leanpub.com/rails-view-book 這個 talk 生成一本書了。歡迎支持。

晚點會來生一個 coupon 給之前買過 Rails Pattern 的讀者

@xdite 啊哦,不用这样吧。

新书 20 刀,略贵喔

上面的博文 404 了?

#17 楼 @iBachue 估计是因为写成书的原因啦

#21 楼 @501225658 #22 楼 @aisensiy XD 大神把这个系列整成了一本书,在网上买。

介绍。网址: http://blog.xdite.net/posts/2013/11/12/maintainable-rails-view-is-now-a-book

要不一起团购?哈哈

#24 楼 @CN_Boris 通过你的博客给你发私信了。您查收一下吧。哈哈

404 看不了了,怎么办

棒,别太在意别人,话说能加您么

需要 登录 后方可回复, 如果你还没有账号请 注册新账号