In meinem Rails-Programm möchte ich gerne Listenelemente (acts_as_list) horizontal sortieren können. Das ganze sollte über eine kleine Symbolleiste (s. Bild) über jedem Listenelement geschehen. Anfangs schrieb ich einfach den HTML/Rails-Code, der die 5 Buttons enthielt, direkt in den View hinein. Doch dann packte mich der Ehrgeiz und habe versucht, es zu verbessern. Am Ende hatte ich folgenden verschwurbelten Helpercode:
"<table class=\"sort_buttons\"><tr> </tr></table>"
end
protected
buttons = [ {:action => :to_top, :exclude_on => :first? },
{:action => :up, :exclude_on => :first? },
{:action => :delete, :exclude_on => :nil? }, # dummy
{:action => :down, :exclude_on => :last? },
{:action => :to_bottom, :exclude_on => :last? } ]
cols = buttons.collect do |button|
["<td>", (sort_button(:controller => options[:controller],
:action => button[:action],
:id => options[:id]) unless options[:id].send(
button[:exclude_on])),
"</td>"].join
end.join
end
link_to image_tag(options[:action].to_s, :size => options[:size]),
:controller => options[:controller], :action => options[:action],
:id => options[:id]
end
Endlich habe ich das Gefühl, die Anfängerpfade verlassen zu haben. Und das nur um DRY-willen.
An solchem Code sehe ich auch, daß es höchste Zeit fürs Wochenende wird