Helper设计方法举例

helper 设计方法举例

  1. 尽量避免太多html code,无论是ruby的还是纯html
  2. view里面有太多让人难以理解的判断时,装在helper中并语意命名,让view更能理解。
    如:把
1
2
3
<% if current_user && current_user = @topic.user_id %>
#show shomething
<% end %>

改成

1
2
3
<% if editable?(current_user) %>
#show shomething
<% end %>

helper_method 與view_context

1
2
3
4
5
class ProductsController
def find_cart
@cart = Cart.find(session[:cart_id])
end
end

在view里面不能用find_cart
<%= find_cart.items %>

如果在controller和view都能用这个view。
必须要用helper_method声明这是一个controller级的helper。

1
2
3
4
5
6
7
class ApplicationController
helper_method :current_cart
def current_cart
cart = Cart.find(session[:cart_id])
return cart
end
end

这样就能在view里面用current_user

<%= current_cart.items %>

在controller里面也能用current_cart.

1
2
3
4
5
class ProductsController
def add_to_cart
current_cart.items << @product
end
end

view_context

1
2
3
4
5
class ProductsController
def show
@page_description = view_context.truncate(@product.desc, :lenght => 50 )
end
end