zoukankan      html  css  js  c++  java
  • 在Controller或Model中使用Helper

     

    转自 http://rubyer.me/blog/1124/
     

    有一个这样的场景:

    对用户输入的内容中所有HTML标签去掉,只保留文本,然后保存到数据库。

    立马想到了Helper中有strip_tags这个方法,可以过滤掉字符串中所有HTML标签。但helper方法默认只能在MVC层中的View层使用。而这个过滤操作一定要在Controller或Model中进行。

    可以这样做:
    法一:

    class PostsController < ApplicationController
      def create
        ActionController::Base.helpers.strip_tags('string')
      end
    end
    

      

    ActionController::Base.helpers就是专门为view外部的类(不限于Controller和Model)提供helper方法的代理,源码中定义如下:

    # Provides a proxy to access helpers methods from outside the view.
    def helpers
      @helper_proxy ||= ActionView::Base.new.extend(_helpers)
    end
    

      

    法二:用代理delegate

    class PostsController < ApplicationController
      delegate "strip_tags", :to => "ActionController::Base.helpers"
    
      def create
        strip_tags("html...")
        ...
      end
    end
    

      

     参考了:http://railscasts.com/episodes/132-helpers-outside-views
  • 相关阅读:
    浅谈单调栈、单调队列
    关于博客迁移
    高二四班抽号
    数据结构
    图论
    洛谷 P3817 小A的糖果
    洛谷 P4016 负载平衡问题
    洛谷 P4306 [JSOI2010]连通数
    洛谷 P4822 [BJWC2012]冻结
    洛谷 P4568 [JLOI2011]飞行路线
  • 原文地址:https://www.cnblogs.com/yanmiao/p/2453627.html
Copyright © 2011-2022 走看看