Home  >  Article  >  Backend Development  >  Display different color emoticons based on order status

Display different color emoticons based on order status

巴扎黑
巴扎黑Original
2016-12-03 11:32:462289browse

One: Define the corresponding css according to the status in help

module Admin::Order::DetailsHelper
  # 显示彩色问题状态
  PS_BG_COLOR = {"finish"=>"green","un_catch"=>"yellow","under_take"=>"red"}
  def color_problem_status(detail)
    %Q{<span class="ui circular label #{PS_BG_COLOR[detail.problem_status]} basic"> #{detail.i18n_attr_problem_status} </span>} 
  end
end

Two: Define a more flexible display through blocks.

<%= show_created_by_name(@company.created_by) do |name|%>  
        <div class="column column_new">创建人: <%= name%> </div>  
<% end %>  
  
def show_created_by_name(created_by, &block)  
    name = CreatedBy.display_name(created_by)  
    if block_given?  
      capture(name,&block) if name.present?  
    else  
      name  
    end  
end

Three: Define state css by using i8n

module Website
  module Ext
    module ActiveRecord
      module I18n
        extend ActiveSupport::Concern
        I18N_ATTR_PREFIX = /^i18n_attr_/
        NAME_OF_PREFIX = /^name_of_/
        def method_missing(method,opt={}, *args, &block)
          c = method.to_s
          col = c.sub(I18N_ATTR_PREFIX,&#39;&#39;)
          if c =~ I18N_ATTR_PREFIX 
            col = c.sub(I18N_ATTR_PREFIX,&#39;&#39;)
            display_model_status(self.class, col, self.send(col.to_sym),opt) if self.class.column_names.include?(col)
          elsif c =~ NAME_OF_PREFIX 
            col = c.sub(NAME_OF_PREFIX,&#39;&#39;)
            eval("#{self.class.name}::#{col.upcase}.invert[self.#{col}]") if eval("#{self.class.name}.constants.include?(:#{col.upcase})")
          else
            super
          end
        end
        def display_model_status(model,attribute,value,opt={})
          return if value.nil?
          if [&#39;active&#39;].include?(attribute.to_s.strip)
            s = ::I18n.t("activerecord.status.#{attribute}.#{value}", default: value) 
          else
            s = ::I18n.t("activerecord.status.#{model.name.underscore}.#{attribute}.#{value}", default: value)
          end
          
          if opt[:css]
            s = %Q{<span class="ui circular label #{model.name.underscore} #{attribute} #{value} basic"> #{s} </span>}  
          end
          s
        end
      end
    end
  end
end
调用:
<%=raw detail.i18n_attr_problem_status(css:true) %>
<%=raw detail.i18n_attr_problem_status %>
enum problem_status: {
    "normal" => 0 ,
    "finish" =>1,
    "un_catch" => 10,
    "under_take" =>11
  }
i8n:
problem_status:
          &#39;normal&#39;: &#39;&#39;  
          &#39;finish&#39;: &#39;问题订单已处理&#39;
          &#39;un_catch&#39;: &#39;问题订单未处理&#39;
          &#39;under_take&#39;: &#39;问题订单处理中&#39;  
css:
/*问题订单状态颜色*/
.order_detail.problem_status.finish{
    color:#21BA45 !important;
    background-color: #fff !important; 
    border: 1px solid #21BA45 !important; 
}
.order_detail.problem_status.un_catch{
    color:#FBBD08 !important;
    background-color: #fff !important; 
    border: 1px solid #FBBD08 !important; 
}
.order_detail.problem_status.under_take{
    color:#DB2828 !important;
    background-color: #fff !important; 
    border: 1px solid #DB2828 !important; 
}


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:How to write a function?Next article:How to write a function?