2016-10-16 1 views
1

ein Activerecord-Modell namens Foo mit einem Umfang gegeben, dass ein Argument wie dies erfordert:Wie übergibt man einem Scope in einer ActiveAdmin-Indexkonfiguration ein Argument?

scope :updated_since, ->(dt) { where("updated_at >= ?", dt) } 

, wie ich dies verwende in app/admin/foo.rb, dh wie rufe ich mit dem Argument erforderlich, um es so dass die ActiveAdmin-Bereichsschaltfläche erstellt wird?

Danke!

+0

Möchten Sie einen anderen Bereich erstellen möchten, das ist der 'updated_since' Umfang für 10 Tage? Falls nicht, klären Sie, was Sie in 'scope -> {" Update in den letzten 10 Tagen ", Date.today - 10.days} tun wollen,: updated_since' – Nobita

+0

Ich möchte, dass activeadmin eine Bereichsschaltfläche mit dem Text" Updated in die letzten 10 Tage "und dann auch eine Schaltfläche, die" in den letzten 30 Tagen aktualisiert "sagt. Mein Codierungsversuch ist wahrscheinlich weit weg, wurde aber eingefügt, um den Kern dessen zu geben, was ich erreichen möchte, jedoch kann er ignoriert werden. Die Frage, die ich dachte, sprach für sich selbst. – David

Antwort

0

Sie einen Block im Registerblock

scope "last 10 days" do |foos| 
    foos.updated_since(Date.today - 10.days) 
end 

scope "last 30 days" do |foos| 
    foos.updated_since(Date.today - 30.days) 
end 

bieten kann wie so, die wie

%w(10 30).each do |days_string| 
    scope "last #{days_string} days" do |foos| 
    foos.updated_since(Date.today - days_string.to_i.days) 
    end 
end 

ActiveAdmin Genießen abgekürzt werden kann :)

Verwandte Themen