about 1 year ago

这是 购物网站 第二周复盘笔记的疑问记录:关于 helper_method 的疑问。

在实作 购物网站 5-4 解答 里出现这样一段代码:

app/controller/applications_controller.rb
helper_method :current_cart

helper_method 是做什么用的?

查找资料发现: controller 里面的 method 不能拿到 view 里面直接用,怎样理解呢?比如:

app/controller/products_controller.rb
class ProductsController
  def find_cart
    @cart = Cart.find(session[:cart_id])
  end
end

app/controller/products_controller.rb 里定义好 find_cart ,我们再到 view 里尝试调用 find_cart

<%= find_cart.items %>

不能使用这种方式来调用 find_cart ,具体原因可能是由于Rails的设计原理,还有待考证!

正确的使用方式是:

application_controller.rb 中添加一条 helper_method 来表示后面的内容是 controller级别的 helper ,再去 view 里去引用就可以了!( application_controller.rb 代表 全局controller设置。)

参考资料:
← [学习笔记] ||= 是什么? [学习笔记] find 与 find_by 的区别 →
 
comments powered by Disqus