Kann ich mit einem Befehl mehrere Controller und mehrere View gleichzeitig anlegen. Ich dachte dabei als Übergabe für den Controllername ein Array zu verwenden, aber irgendwie will das mein Rails nicht haben.... Oder ist das schlechter Stil, wenn man für jedes Obst einen eigene Controller anlegt? script/generate controller %W[apfel birne] index pfluecken essen Any hints? mario
on 23.04.2008 19:40
on 23.04.2008 19:47
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 was willst du denn mit deinem obst machen? vielleicht reicht ja ein controller und dann hast du auch kein problem mit DRY. sind ja eher die models, die sich unterscheiden, oder? gruß manuel Am 23.04.2008 um 19:39 schrieb Mario Schroeder: > Any hints? > > > mario > > > _______________________________________________ > rubyonrails-ug mailing list > rubyonrails-ug@headflash.com > http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (Darwin) iD8DBQFID3YBs/WwCK0ZZEARArpvAKDkdCWqSNGiT6zxS4anLk98fuw1lQCfccmH HMKKk6MtSimu+T8AMB4bpMk= =bSHT -----END PGP SIGNATURE-----
on 23.04.2008 19:51
Naja den Apfel will ich pflücken und essen, und eine Übersicht über die Äpfel und Birnen haben. DRY will ich auch haben..... wenn es geht. mario
on 24.04.2008 07:47
Hi!
wenn du script/generate benutzt, bist du auf der Console unterwegs. Die
kennt kein Ruby. Da kommst du mit Ruby Syntax nicht weiter. Aber du
könntest in IRB folgendes tun:
> %w{apfel birne orange}.each do |obst|
> system "script/generate controller #{obst} index pfluecken essen"
> end
on 24.04.2008 08:31
Sers, Mario. > Kann ich mit einem Befehl mehrere Controller und mehrere View > gleichzeitig anlegen. Selbstverständlich geht das. Letzlich sind es zwar doch einzelne Aufrufe von script/generate, aber mit Shellscript oder Batch-Aufrufen unter Windows geht das. Da ich ein Unix-Mensch bin, hier eine Moeglichkeit fuer Unix/Linux: for controller in apfel birne; do script/generate $controller index \ pfuecken essen; done > Ich dachte dabei als Übergabe für den Controllername ein Array zu > verwenden, aber irgendwie will das mein Rails nicht haben.... Innerhalb von Rails geht dass etwas anders. script/generate ist ja selbst ein Script, du kannst aus ruby heraus das beispielsweise mit system() aufrufen: ['apfel', 'birne'].each do |controller| system("script/generate #{controller} index pfluecken essen") end Mit einem map statt each bekommst du auch noch mit, ob das alles geklappt hat. > Oder ist das schlechter Stil, wenn man für jedes Obst einen eigene > Controller anlegt? Ich schaetze, du willst eigentlich etwas ganz anderes. Aber generell, wenn jedes Obst ansich eben alles auch Obst ist, und du mit dem Obst jeweils dasselbe machen willst, dann hast du deine Obst-Objekte mit ActiveRecord auch nicht jeweils in einer eigenen Tabelle, sondern du verwendest sog. Single table inheritance (siehe http://api.rubyonrails.org/classes/ActiveRecord/Base.html). Gerade in Rails wird versucht Dopplungen zu vermeiden (DRY - Don't Repeat Yourself). Gruesse, Rainer