Bevor ihr alle in den Mai tanzt..
Ich komme hier gerade nicht weiter. Vielleicht kann mir jemand eine
Idee geben.
Die Tabelle hat chars für die Spalten Kinder, Jugendliche, etc.
also 1 oder 0 als Wert
Abfrage im Formular:
<%= f.select(:zielgruppe, [['Kinder', 'kinder'],
['Jugendliche', 'jugend'],
['Erwachsene', 'erwachsene'],
etc. etc.
Wie schreibe ich da am besten das find statement
@result = Model.find(:all, :conditions => [params[:zielgruppe] => true])
erhalte ich : undefined method `%' for {nil=>true}:Hash
Da steh ich gerade aufm Schlauch, zumal ich 5 dieser selects habe...
Gruß und Danke
Werner Laude
Lindenburger Allee 22 - 50931 Köln
0221.8805 635
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://www.webagentur-laude.de
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on 30.04.2008 20:01
on 30.04.2008 20:19
Hi Werner,
Was rails aus dem conditions machen möchte ist etwas das hier
{params[:zielgruppe] => true} %
Geht natürlich nicht. Das hier aber sollte:
Model.find(:all, :conditions => ['zielgruppe = ?', params[:zielgruppe]])
ciao, tom
Am 30.04.2008 um 20:00 schrieb Werner Laude:
> ['Jugendliche', 'jugend'],
> ['Erwachsene', 'erwachsene'],
> etc. etc.
>
> Wie schreibe ich da am besten das find statement
>
> @result = Model.find(:all, :conditions => [params[:zielgruppe] =>
> true])
> erhalte ich : undefined method `%' for {nil=>true}:Hash
>
> Da steh ich gerade aufm Schlauch, zumal ich 5 dieser selects habe...
--
Thomas R. "TomK32" Koll || http://tomk32.de || http://ananasblau.com
just a geek trying to change the world
Skype: TomK32 || Mail: tomk32@gmx.de
on 30.04.2008 20:38
Am 30.04.2008 um 20:18 schrieb Thomas R. Koll: Hallo Tom.. danke soweit.. aber das ist nur das halbe Problem. Ich verstehe noch nicht wie ich 15 Spalten gleichzeitig abfragen kann. Soviele Auswahlmöglichkeiten hat der select_tag Das select gibt zb. den Wert 'jugend' zurück. Nun gibt es eine Spalte jugend in der div. Datensätz eine 1 stehen haben. Die sollen geliefert werden. Nicht aber die Werte aus der Spalte kinder. Gibt es da einen Weg ? Gruß > >> <%= f.select(:zielgruppe, [['Kinder', 'kinder'], >> Da steh ich gerade aufm Schlauch, zumal ich 5 dieser selects habe... > http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug > Werner Laude Lindenburger Allee 22 - 50931 Köln 0221.8805 635 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://www.webagentur-laude.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on 30.04.2008 20:43
Hi Werner, Ich denke du hast einen falschen Ansatz beim Design deiner Datenbank. Was dir fehlt ist offenbar ein model Audience mit einer Relation zu deinem bisherigen model. ciao, tom Am 30.04.2008 um 20:37 schrieb Werner Laude: > geliefert werden. Nicht aber die Werte aus der Spalte kinder. > Gibt es da einen Weg ? -- Thomas R. "TomK32" Koll || http://tomk32.de || http://ananasblau.com just a geek trying to change the world Skype: TomK32 || Mail: tomk32@gmx.de
on 30.04.2008 20:59
Am 30.04.2008 um 20:42 schrieb Thomas R. Koll: > die db war so aufgebaut (access..) > > Was dir fehlt ist offenbar ein model Audience mit einer Relation zu > deinem > bisherigen model. mhh damit kann ich jetzt erst mal nix anfangen.. wo kann ich da was finden..? Gruß >> Ich verstehe noch nicht wie ich 15 Spalten gleichzeitig abfragen > Skype: TomK32 || Mail: tomk32@gmx.de > > _______________________________________________ > rubyonrails-ug mailing list > rubyonrails-ug@headflash.com > http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug > Werner Laude Lindenburger Allee 22 - 50931 Köln 0221.8805 635 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://www.webagentur-laude.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on 30.04.2008 21:10
hi, >> Die Tabelle hat chars für die Spalten Kinder, Jugendliche, etc. >> also 1 oder 0 als Wert du hast also so eine tabelle? id | kinder | jugend | erwachsene | ... 1 | 0 | 1 | 0 | ... ... wenn ja, wäre's vermutlich besser die struktur zu ändern, es sei denn das ist bewusst so. wie? - wenn es pro model nur eine zielgruppe gibt, kannst du die felder auf eines eindampfen (das dann zielgruppe heisst und als wert enthält: 0/1/2 zur identifikation von kinder/jugend/erwachsene, oder direkt den string, oder die zielgruppen_id eines per has_one verknüpften zielgruppen-objekts). - wenn es pro model mehrere zielgruppen geben kann, würde eine has_many relation mit eigenem zielgruppen-objekt sinn machen. um dein bestehendes problem ohne tabellen-strukturänderung zu lösen, müsstest du etwa folgendes machen (bäh ;-)). problem ist u.a., dass du bei einer änderung der verfügbaren zielgruppen deinen code anpassen musst. @result = Model.find(:all, :conditions => { 'kinder' => (params['zielgruppe'] == 'kinder'), 'jugend' => (params['zielgruppe'] == 'jugend'), // ... } viele grüße,phillip --- Am 30.04.2008 um 20:18 schrieb Thomas R. Koll:
on 30.04.2008 21:12
Hi -- On Wed, 30 Apr 2008, Werner Laude wrote: > aber die Werte aus der Spalte kinder. > Gibt es da einen Weg ? Wenn ich das Problem richtig verstanden habe, vielleicht koenntest du es so machen: Model.find(:all, :conditions => ['zielgruppe in (?)', params[:zielgruppe]]) David
on 30.04.2008 21:22
Am 30.04.2008 um 21:11 schrieb David A. Black: > Hallo David.. denke das sollte klappen $sql = 'SELECT * FROM `tabelle` WHERE `kinder` = \ '1\' LIMIT 0, 30 '; > Wenn ich das Problem richtig verstanden habe, vielleicht koenntest du > es so machen: > > Model.find(:all, :conditions => ['zielgruppe in (?)', > params[:zielgruppe]]) Ich teste das morgen mal . Für heute langts.. Danke > See http://www.rubypal.com for details and updates! > _______________________________________________ > rubyonrails-ug mailing list > rubyonrails-ug@headflash.com > http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug Werner Laude Lindenburger Allee 22 - 50931 Köln 0221.8805 635 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://www.webagentur-laude.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on 30.04.2008 21:29
Hi -- On Wed, 30 Apr 2008, Werner Laude wrote: > >> Wenn ich das Problem richtig verstanden habe, vielleicht koenntest du >> es so machen: >> >> Model.find(:all, :conditions => ['zielgruppe in (?)', params[:zielgruppe]]) > > > Ich teste das morgen mal . Für heute langts.. Ich glaube jetzt, die Details missverstanden zu haben... es gibt naemlich keine "zielgruppe"-Spalte, wie ich glaubte. Vielleicht kann dieses "in (?)" immerhin irgendwie helfen :-) David
on 01.05.2008 05:06
Hi -- On Wed, 30 Apr 2008, Werner Laude wrote: > ['Jugendliche', 'jugend'], > ['Erwachsene', 'erwachsene'], > etc. etc. > > Wie schreibe ich da am besten das find statement > > @result = Model.find(:all, :conditions => [params[:zielgruppe] => true]) > erhalte ich : undefined method `%' for {nil=>true}:Hash OK, neue Idee: Model.find(:all, :conditions => [*params[:zielgruppe]].join(" = 1 OR ")) + " = 1" (Mit beliebiger SQL-reinigung.) Und dazu, im View: <%= select_tag("zielgruppe[]", options_for_select([['Kinder', 'kinder'], ['Jugendliche', 'jugend'], ['Erwachsene', 'erwachsene']]), :multiple => true) %> oder aehliches. David
on 01.05.2008 10:18
Am 01.05.2008 um 05:05 schrieb David A. Black:
Hi David..
danke für den Vorschlag..
bisher klappt es so:
begin
@result = User.find(:all, :conditions => ["#{params[:user]
[:zielgruppe]} = ?", 1])
rescue
Das rescue weil auch null Werte abgefangen werden sollen..
Was jetzt aber noch kommt ist, das ich ca 15-20 dieser Art Abfragen in
die conditions einbauen muß. Selects und Check Boxen.
Ich hatte die Idee das mit einem array zu machen.
:conditions => ["array1", array2]
Aber noch nichts konkretes wie diese arrays aufzubauen
wären..nullwerte abfangen..
Schönen Feiertag..
Gruß
>> also 1 oder 0 als Wert
>> true])
>
>
> --
> Rails training from David A. Black and Ruby Power and Light:
> INTRO TO RAILS June 9-12 Berlin
> ADVANCING WITH RAILS June 16-19 Berlin
> INTRO TO RAILS June 24-27 London (Skills Matter)
> See http://www.rubypal.com for details and updates!
> _______________________________________________
> rubyonrails-ug mailing list
> rubyonrails-ug@headflash.com
> http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
Werner Laude
Lindenburger Allee 22 - 50931
Köln
0221.8805 635
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://www.webagentur-laude.de
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on 01.05.2008 14:02
Hi -- On Thu, 1 May 2008, Werner Laude wrote: > > :conditions => ["array1", array2] > > Aber noch nichts konkretes wie diese arrays aufzubauen wären..nullwerte > abfangen.. array1 ist aber vermuetlich ein echtes Array (und kein String). Deswegen hatte ich geglaubt, dass "join" klappen wuerde: :conditions => [*params[:user][:zielgruppe]].join(" = 1 OR ")) + " = 1" Wenn zB. man "jugend" und "erwachsene" waehlt, wird das Array ["jugend", "erwachsene"] dem Controller in params[:user][:zielgruppe] geliefert, und folgendes SQL gebaut: SELECT * FROM things WHERE (jugend = 1 OR erwachsene = 1); David
on 02.05.2008 09:45
Am 01.05.2008 um 14:01 schrieb David A. Black: Hi David. danke für den input. In diesem Fall ist kein Mehrfachauswahl nötig. sondern... > > > :conditions => [*params[:user][:zielgruppe]].join(" = 1 OR ")) + " = > 1" > > Wenn zB. man "jugend" und "erwachsene" waehlt, wird das Array > ["jugend", "erwachsene"] dem Controller in params[:user][:zielgruppe] > geliefert, und folgendes SQL gebaut: > > SELECT * FROM things WHERE (jugend = 1 OR erwachsene = 1); Ich bin am überlegen wie ich select 1 select 2 select 3 etc. checkbox 1 checkbox2 etc. in den conditions-string einbaue. Die options entsprechen jeweils einer db Spalte (char 0 / 1) select 1 bis 5 , checkboxes eh, können jeweils ..müssen aber keinen Wert haben. Habe noch keine Erfahrung solche komplexen Abfragen zusammenzubauen. Wenn du magst und Zeit hast (oder auch eine anderer Mitleser..) ,können wir gerne über eine Kleinauftrag sprechen.. Gruß Werner Laude Lindenburger Allee 22 - 50931 Köln 0221.8805 635 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://www.webagentur-laude.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on 11.05.2008 03:49
Hallo, On Wed, Apr 30, 2008 at 8:00 PM, Werner Laude <newsgroup@wernerlaude.de> wrote: > Die Tabelle hat chars für die Spalten Kinder, Jugendliche, etc. > also 1 oder 0 als Wert > Abfrage im Formular: > <%= f.select(:zielgruppe, [['Kinder', 'kinder'], > ['Jugendliche', 'jugend'], > ['Erwachsene', 'erwachsene'], ich komme zwar etwas spät mit dieser Mail, aber hoffentlich noch nicht zu spät. Wie wäre es mit dem has_flags-Plugin? http://64.164.6.244:9080/has_flags Es behandelt Deine Flags als Bit-Field in der Datenbank und die Abfrage ist recht leicht zu bewerkstellingen: Model.find_by_flags. Andreas Roedl
on 11.05.2008 12:43
Am 11.05.2008 um 03:49 schrieb Andreas Roedl: >> > > ich komme zwar etwas spät mit dieser Mail, aber hoffentlich noch nicht > zu spät. Wie wäre es mit dem has_flags-Plugin? Hallo Andreas.. velen Dank für deinen Vorschlag. Ich habe das mit condition_bilder (plugin) gelöst.. http://www.psychotherapiesuche.de/spezialsuche Gruß Werner Laude Lindenburger Allee 22 - 50931 Köln 0221.8805 635 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ http://www.webagentur-laude.de ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~