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

xdite · 发布于 2013年10月31日 · 最后由 xdite 回复于 2013年12月24日 · 6389 次阅读
196
本帖已被设为精华帖!

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

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

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

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

以下是 Maintainable Rails View 系列文目錄

共收到 27 条回复
6476

第二篇的代码

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

需要改成下边这样吧?

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

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

2474

Cool……学了好几招……

3211

仔细看着呢,谢楼主~

6281

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

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

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

196

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

6281

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

3469

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

196

@mahone3297

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

96

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

196

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

196

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

3869

@xdite 啊哦,不用这样吧。

3081

新书20刀,略贵喔

172

上面的博文404了?

96

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

5759

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

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

要不一起团购?哈哈

5759

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

7701

404看不了了,怎么办

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