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 L.
Lindenburger Allee 22 - 50931 Köln
0221.8805 635
http://www.webagentur-laude.de
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 L.:
['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: [email protected]
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 L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635
http://www.webagentur-laude.de
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 L.:
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: [email protected]
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:
Hi –
On Wed, 30 Apr 2008, Werner L. 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
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: [email protected]
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635
http://www.webagentur-laude.de
Hi –
On Wed, 30 Apr 2008, Werner L. 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
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
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635
http://www.webagentur-laude.de
Hi –
On Wed, 30 Apr 2008, Werner L. 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
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
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
Werner L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635
http://www.webagentur-laude.de
Hi –
On Thu, 1 May 2008, Werner L. 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
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 L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635
http://www.webagentur-laude.de
Hallo,
On Wed, Apr 30, 2008 at 8:00 PM, Werner L. [email protected]
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 R.
Am 11.05.2008 um 03:49 schrieb Andreas R.:
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 L.
Lindenburger Allee 22 - 50931
Köln
0221.8805 635
http://www.webagentur-laude.de