Forum: Rails Germany ein event von vielen

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Philipp T. (Guest)
on 2008-10-19 18:24
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
Torsten F. (Guest)
on 2008-10-19 19:03
(Received via mailing list)
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
Philipp T. (Guest)
on 2008-10-19 19:40
hi torsten,

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

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
Werner L. (Guest)
on 2008-10-19 21:00
(Received via mailing list)
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? %>
<strong>Was neues..! </strong>
<%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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Thomas R. Koll (Guest)
on 2008-10-19 21:02
(Received via mailing list)
Am 19.10.2008 um 18:59 schrieb Werner L.:
>
> View:
> <% if article.recent? %>
> <strong>Was neues..! </strong>
> <%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
Niko D. (Guest)
on 2008-10-19 21:19
(Received via mailing list)
Hi Philipp.

Am 19.10.2008 um 17:40 schrieb Philipp Thole:
> vielen dank für deinen tipp.
> Event.find_by_date klappt prima :)
>
> 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.
Torsten F. (Guest)
on 2008-10-19 21:24
(Received via mailing list)
Philipp Thole schrieb:
> hi torsten,
>
> vielen dank für deinen tipp.
> Event.find_by_date klappt prima :)

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
Torsten F. (Guest)
on 2008-10-19 21:28
(Received via mailing list)
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
Niko D. (Guest)
on 2008-10-19 21:33
(Received via mailing list)
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…  :D


Niko.
Philipp T. (Guest)
on 2008-10-19 23:34
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
This topic is locked and can not be replied to.