1

コントローラではなく、ビューでdb値をチェックするのは良いですか?今、私はそのような見解を持っています:

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

以前のRails3.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

私のデータベースの数量を確認し、値の表示価格に応じて表示するにはどうすればよいですか?またはそれは「犯罪者」であり、私はコントローラーでこれを行う必要がありますか?このチェックインコントローラーを実行してビューに表示する方法よりも?

これは私のdbではないので、非常に巨大で、多くのテーブルとデータが含まれていることに注意してください。

4

1 に答える 1

1

ビューで確認しても問題ありません。であるため、エラーが発生しart.QUANTITYMますnil。このエラーを防ぐには、それがnil最初であるかどうかを確認し、次にゼロより大きいかどうかを確認する必要があります。

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