DRY Hilfe - ich muss RY

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
removed_email[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]

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs