在rails视图中检查db值

时间:2012-08-13 10:58:42

标签: ruby-on-rails ruby ruby-on-rails-3

检查视图中的db值是否合适,而不是在控制器中? 现在我有这样的观点:

- @articles.each do |art|
  -if art.QUANTITYM > 0
    =art.PRICEM
     %br
       = art.PRICEM * @currency.currencyvalue

在我之前的rails 3.0.9项目(现为3.2.6)上,一切都很好,但现在它给了我:

  

未定义的方法`>'为零:NilClass

我在控制器中的方法看起来像这样:

def category
    @type_details = Type.find_by_TYP_ID(params[:type])
    @search_trees = SearchTree.find(:all, :include => [:designation], :conditions => { :STR_ID_PARENT => params[:cat]})


    @strlookup = StrLookup.find(:all, :conditions => { :STL_STR_ID => params[:cat]})
    @genart = GenericArticle.all(:conditions => { :GA_ID => @strlookup.map(&:STL_GA_ID)})

    @type = params[:type]
    @la_typs = LinkLaTyp.find(:all, :conditions => { :LAT_TYP_ID => params[:type], :LAT_GA_ID => @genart.map(&:GA_ID)})    


    data = "{ label : 1,  children : [{label : 1},{label : 1}]  }"
    #puts JSON.pretty_generate(data)


    if @genart.blank?
      @articles = nil

    else
      @linkla = LinkArt.find(:all, :conditions => { :LA_ID => @la_typs.map(&:LAT_LA_ID), :LA_GA_ID => @genart.map(&:GA_ID)})    
      @pre_articles = Article.find(:all, :include => [:supplier], :conditions => {:ART_ID => @linkla.map(&:LA_ART_ID)}, :order => "SUPPLIERS.SUP_BRAND, ARTICLES.QUANTITYM asc")
      @articles = Kaminari.paginate_array(@pre_articles).page(params[:page]).per(20)
    end


    @currency = Currency.find(:first)

    #@cart = current_cart #NOTE THIS!!!
    respond_to do |format|

      format.html # index.html.erb
      format.xml  { render :xml => @search_trees }
      #format.json { render :json => @search_trees }
    end
  end

如何检查我的数据库数量并在视图中根据值显示价格?或者它是“犯罪”,我必须在控制器中这样做?比如何检查控制器并在视图中显示它?

请注意,这是非我的数据库,所以它非常庞大,并且包含很多表和数据。

1 个答案:

答案 0 :(得分:1)

在视图中检查它没问题。您收到错误是因为art.QUANTITYMnil。要防止出现此错误,您必须首先检查它是nil,然后检查它是否大于零:

- if art.QUANTITYM.present? && art.QUANTITYM > 0