Hallo Liste,
ich hoffe ich muss DRY.
Ich habe einen KartenController und die zugehörigen Views (freiburg,
weimar, erfurt)
In den einzelnen views baue ich mir die image_url der Fotos über ein
einfaches
KartenController:
def weimar
@foto = Foto.find(:all)
end
def freiburg
@foto = Foto.find(:all)
end
def erfurt
@foto = Foto.find(:all)
end
Um dann in der entsprechenden View darüber interieren zu können und die
einzelnen Fotodaten auszugeben.
view: weimar.html.erb
<% @foto.each do |foto| %>
<%= foto.image_url %>
<%= foto.beschreibung %>
<% end %>
view: efurt.html.erb
<% @foto.each do |foto| %>
<%= foto.image_url %>
<%= foto.beschreibung %>
<% end %>
Das ist aber nicht nur RY sondern einfach nur schlechter Stil.
Hallo,
vielleicht etwas meta programming, mir würde da sponan soetwas einfallen:
Class karten_controller < ApplicationContoller
class_eval <<-EOV
Def controller.action_name
@fotos = Foto.find(:hast_du_noch_nicht_gesehen)
end
EOV
end
Sowas vielleicht?
Herzliche GRÜßE,
MICHAEL
Am 24.04.2008 21:43 Uhr schrieb “Mario Schroeder” unter
[email protected]:
Hallo,
nicht eher einfacher in der Art?
routes.rb
map.connect ‘karten/:city’, :controller => :maps, :action => ‘show’
app/controllers/maps_controller.rb
class MapsController < ApplicationController
def show
@fotos = Foto.find :all
render :action => params[:city]
end
end
dann kannste in app/views/ deine views anlegen
weimar.html.erb mit
<% @fotos.each do |foto| %>
<%= foto.image_url %>
<%= foto.beschreibung %>
<% end %>
oder aber ganz einfach - wenn sich da nichts aendert: Nimm das render
aus der controller-action
raus, nimm eine show.html.erb view und zeig da einfach die fotos an.
wenn du immer die passenden bilder zeigen moechtest, du schreibst in
deiner mail immer
@fotos = Foto.find :all
und so wuerden ja immer die gleichen Bilder ueberall gezeigt,
dann kannst du das mit
@fotos = Foto.find_all_by_city params[:city]
regeln, vorrausgesetzt du hast die stadt (city) als feld in der db.
Aber das musst du an
deine DB-Gegenheiten anpassen.
Natuerlich muesstest du checken, ob params[:city] auch gesetzt ist und
ggf ein 404 schicken.
Getestet hab ich den Sourcecode oben nicht, ist ausm Kopf geschrieben…
Gruss,
Tom
Hi,
Der moderne Dorfbewohner macht sowas über routes:
w%{erfurt weimar freiburg hintertupfing}.each do |city|
map.connect ‘karten/#{city}/:action/:id’, :controller
=> :karten, :city => city
map.connect ‘karten/#{city}/:action/:id.:format’, :controller
=> :karten, :city => city
end
ciao, tom
Am 24.04.2008 um 21:43 schrieb Mario Schroeder:
end
view: efurt.html.erb
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug
–
Thomas R. “TomK32” Koll || http://tomk32.de || http://ananasblau.com
just a geek trying to change the world
Skype: TomK32 || Mail: [email protected]