1

在视图中而不是在控制器中检查 db 值是否很好?现在我有这样的看法:

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

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

nil: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

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

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

4

1 回答 1

1

在视图中检查它没问题。你得到错误是因为art.QUANTITYMis nil。为防止此错误,您必须检查它是否是nil第一个,然后检查它是否大于零:

- if art.QUANTITYM.present? && art.QUANTITYM > 0
于 2012-08-13T11:10:08.823 回答