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
  • 相关阅读:
    shell去重
    JDBC源码解析
    try catch finally
    URL
    域名与IP地址的联系与区别
    C++stack
    C++vector
    单链表常见面试题(C语言实现)
    数据库limit子句
    strcpy和memcpy的区别
  • 原文地址:https://www.cnblogs.com/yanmiao/p/2453627.html
Copyright © 2011-2022 走看看