Ein event von vielen


#1

hi

ich habe folgendes problem bzw. situation:
in einer tabelle habe ich veranstaltungen gespeichert.
die frage ich im controller ab.
so weit so gut.

jetzt kann es aber sein, das eine bestimmt veranstaltung hervorgehoben
sein soll.
wie wähle ich diese dann aus ?

im moment mache ich es so:
def index
if params[:id]
event_date = params[:id]
@single_event = Event.find(:first, :order => “date ASC”,
:conditions => [“date = ?”, event_date] )
else
today = Time.now - 1.day
@single_event = Event.find(:first, :order => “date ASC”,
:conditions => [“date > ?”, today] )
end

@absolute_all_events = Event.find(:all, :order => "date ASC" )
@page_title = @single_event.title

end

das muss doch aber auch besser gehen, oder ?

vielen dank,
philipp


#2

Philipp Thole schrieb:

hi

ich habe folgendes problem bzw. situation:
in einer tabelle habe ich veranstaltungen gespeichert.
die frage ich im controller ab.
so weit so gut.

jetzt kann es aber sein, das eine bestimmt veranstaltung hervorgehoben
sein soll.
wie wähle ich diese dann aus ?

setze eine Instanzvariable in der Index-Methode des Controllers.
Auf die kannst Du im View oder per Helper zugreifen…

im moment mache ich es so:
def index
if params[:id]
event_date = params[:id]
@single_event = Event.find(:first, :order => “date ASC”,
conditions => [“date = ?”, event_date] )

wenns ein SINGLE EVENT ist, warum dann ‘order => …’?
Ohne jetzt tiefer einzutauchen würde ich schreiben:
@single_event = Event.find_by_date(params[:id])

Torsten


#3

hi torsten,

vielen dank für deinen tipp.
Event.find_by_date klappt prima :slight_smile:

allerdings würde ich mir die single event abfrage ja lieber sparen.
also erst alle events aus der db holen:
@absolute_all_events = Event.find(:all, :order => “date ASC” )

und dann aus dieser instanzvariable das event rausfischen, um das es
geht.
hast du eine idee wie ich das am besten anstelle ?

liebe grüße,
philipp


#4

Am 19.10.2008 um 16:24 schrieb Philipp Thole:

Hallo Philipp

jetzt kann es aber sein, das eine bestimmt veranstaltung hervorgehoben
sein soll.
wie wähle ich diese dann aus ?

das muss doch aber auch besser gehen, oder ?

was ähnliches gefunden… da könntest du was draus machen:

View:
<% if article.recent? %>
Was neues…!
<%end%>

Model:
def recent?(compare_to=1.month.ago)
updated_at < compare_to
end

Gruß

Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635


http://www.webagentur-laude.de


#5

Am 19.10.2008 um 18:59 schrieb Werner L.:

View:
<% if article.recent? %>
Was neues…!
<%end%>

Model:
def recent?(compare_to=1.month.ago)
updated_at < compare_to
end

oder natürlich gleich als named_scope damit man’s auch für den finder
verwenden kann.

ciao, tom


Thomas R. “TomK32” Koll || http://tomk32.de || http://ananasblau.com
just a geek trying to change the world
Skype: TomK32 || Mail: removed_email_address@domain.invalid
http://beta.lomography.com/homes/TomK32


#6

Hi Philipp.

Am 19.10.2008 um 17:40 schrieb Philipp Thole:

vielen dank für deinen tipp.
Event.find_by_date klappt prima :slight_smile:

allerdings würde ich mir die single event abfrage ja lieber sparen.
also erst alle events aus der db holen:
@absolute_all_events = Event.find(:all, :order => “date ASC” )

und dann aus dieser instanzvariable das event rausfischen, um das es
geht.
hast du eine idee wie ich das am besten anstelle ?
Well… sowas wie

@all_events = Event.find(:all, :order => “date ASC” )
@single_event = @all_events.select{|e| e.date.to_s > today}.first

vielleicht?

Cheers, Niko.


#7

Philipp Thole schrieb:

hi torsten,

vielen dank für deinen tipp.
Event.find_by_date klappt prima :slight_smile:

i hope(d) so!

allerdings würde ich mir die single event abfrage ja lieber sparen.
also erst alle events aus der db holen:
@absolute_all_events = Event.find(:all, :order => “date ASC” )

und dann aus dieser instanzvariable das event rausfischen, um das es
geht.
hast du eine idee wie ich das am besten anstelle ?

naja, im Prinzip hat das Werner schon (besser) ge- und beschrieben…

to


#8

Am 19.10.2008 um 19:27 schrieb Torsten F.:

Philipp Thole schrieb:

allerdings würde ich mir die single event abfrage ja lieber sparen.
also erst alle events aus der db holen:
^^^^^^^^^^^^^^^^
inwieweit das sinnvoll ist, sollte jeder selbst überdenken!
Nur als Anmerkung - je nach Aufkommen kann das auch mal viel werden!
Naja… sinnvollerweise ist natürlich pagination der nächste Schritt…
aber wenn ich’s richtig verstanden habe war ja das Kernproblem, wie
man aus einer Collection von Events eins rausfischt, um’s dann
besonders zu kennzeichnen. ActiveRecord ist wohl so einfach zu
bedienen, dass die Leute schneller wissen, wie sie sowas mit AR
machen, als wie das mit Ruby selbst geht… oder ich habe das Ansinnen
vollkommen missverstanden, dann bitte ich präventiv um
Entschuldigung… :smiley:

Niko.


#9

hallo

erstmal allen vielen dank für die hilfe.
die antworten haben mir sehr weitergeholfen.

und
@single_event = @all_events.select{|e| e.date.to_s > today}.first
ist genau das was ich gesucht habe.

bei @all_events handelt es sich im moment um etwa 40 einträge.
jedes jahr kommen etwa 20 hinzu.
das sollte doch noch zu verkraften sein, oder ?

trotzdem, pagination werde ich mir noch mal ansehen.

also, noch mal vielen dank für die hilfe,
philipp


#10

Philipp Thole schrieb:

allerdings würde ich mir die single event abfrage ja lieber sparen.
also erst alle events aus der db holen:
^^^^^^^^^^^^^^^^
inwieweit das sinnvoll ist, sollte jeder selbst überdenken!
Nur als Anmerkung - je nach Aufkommen kann das auch mal viel werden!

to