2012-08-13 52 views
1

在視圖中檢查db值而不是在控制器中檢查db值是否好? 現在我有這樣的說法:在rails視圖中檢查db值

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

在我前面的鐵軌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

在視圖中檢查它沒有問題。你得到的錯誤,因爲art.QUANTITYMnil。爲了防止這種錯誤,你必須檢查它是否nil第一,然後如果是大於零:

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

OK)感謝的。所有正確 – byCoder 2012-08-13 11:36:52

+0

不需要做art.QUANTITYM.present?,如果art.QUANTITYM && art.QUANTITYM> 0應該可以工作 – SKR 2012-08-13 11:39:39

+0

不,不,你的代碼很好,虐待你的代碼 – byCoder 2012-08-13 11:42:11