2016-11-13 23 views
0

モデル
材料(それはarrive_date属性を持っている:日付)Railsの他のコントローラから属性を取得する方法

コントローラ
materials_controller、私が知りたいurgent_controllerで
urgent_controller

これを行うことで5日以内に受け取るべきすべての資料

class UrgentController < ApplicationController 
    def index 
    @materials = Material.where((Time.zone.now.to_date - arrive_date).to_i <= 5) 
    end 
end 

しかしurgent_controllerは知らないこの属性およびshowエラー

未定義のローカル変数や

私はこれをどのように修正することができます

する方法 `arrive_date」?前もって感謝します。

+0

コントローラを表示するコードを含めることはできますか?コントローラはお互いを知る必要はありません。 'urgent_controller'は' materials_controller'とは別に独自の 'arrive_date'を定義する必要があります。 –

+0

@EricWalkerこんにちは、私は参照してください更新されたコード –

+0

をご覧ください。おそらくここで何が行われているかのようなものがほしいでしょう:http://stackoverflow.com/questions/10301400/datetime-arithmetic-in-an-activerecord-query-postgresql。 MySQLにも同様の答えがあります。重要な点は、 'arrive_date'がデータベース内の列であるように見えるため、Rubyのメソッドや変数として参照できないということです。 –

答えて

1

この場合、Materialモデルにscopeを作成する必要があります。

scope :last_5_days, -> { where('arrive_date >= ?', 5.days.ago.to_date) } 

その後

def index 
    @materials = Material.last_5_days 
end 

は、この情報がお役に立てば幸いあなたのコントローラでそれを呼び出します。

関連する問題