ich habe in einer Webanwendung link_to überladen, um bei best. actions eine
Warnung anzuzeigen:
def link_to(name, options = {}, html_options = {},
*parameters_for_method_reference)
unless (params[:action] == “list” || options[:safe] == ‘1’ ||
params[:action] == “index” || params[:action] == “show” )
html_options[:confirm]= “Leaving page - input will be lost.”
end
super(name, options,html_options,*parameters_for_method_reference)
end
Das funktionierte soweit ganz gut. Nun würde ich jedoch gerne statt der
Standard-confirm-Funktion eine eigene verwenden. (Um gemachte Änderungen
besser mit JavaScript zu berücksichten.
Ein naiver Testansatz:
html_options[‘onclick’] = “alert(test);”
Zum Einfügen eines onClick-Tags in den link schlug leider fehl.
Ich stehe gerade etwas auf dem Schlauch, da ich in der doku keinen
hinweis
darauf gefunden habe, wie ich ein onClick-Attribut in den Link schreiben
kann.
Wisst ihr mehr?
Also ich persönlich würd ja beim link_to nur einen class name
mitgeben und den dann für’s unobstrusive Javascript zu
verwenden. Aber ist natürlich Geschmackssache ob man
lesbaren Code will oder nicht.
ciao, tom
Am 26.10.2007 um 16:11 schrieb Jan L.:
params[:action] == “index” || params[:action] == “show” )
Ein naiver Testansatz:
html_options[‘onclick’] = “alert(test);”
Zum Einfügen eines onClick-Tags in den link schlug leider fehl.
Ich stehe gerade etwas auf dem Schlauch, da ich in der doku keinen
hinweis
darauf gefunden habe, wie ich ein onClick-Attribut in den Link
schreiben
kann.
Am Fri, 26 Oct 2007 16:39:20 +0200 schrieb “Thomas R. Koll” [email protected]:
Also ich persönlich würd ja beim link_to nur einen class name
mitgeben und den dann für’s unobstrusive Javascript zu
verwenden. Aber ist natürlich Geschmackssache ob man
lesbaren Code will oder nicht.
ich mich hier erneut ausdrücklich anschließen. Schaut euch unbedingt das
UJS-Plugin oder besser noch dessen Nachfolger (bzw. Ersatz) lowpro: http://www.danwebb.net/lowpro
Am Freitag, 26. Oktober 2007 schrieb Thomas R. Koll:
Hi,
Also ich persönlich würd ja beim link_to nur einen class name
mitgeben und den dann für’s unobstrusive Javascript zu
verwenden. Aber ist natürlich Geschmackssache ob man
lesbaren Code will oder nicht.
das heißt aber, das beim Laden der Seite der Browser erstmal den ganzen
DOM-Baum durchsuchen muss um, nur alle Elemente zu finden, die zu dieser
Klasse gehören.
Das kostet ihmo bei größeren Tabellen sehr viel Zeit. (Ich habe schon mal
eine
Anwendung (wir hängen einen event-Listener an Elemente in einer Tabelle
mehreren 100 Zeilen) durchaus in die Minuten ging)
Da gehe ich lieber hin, lege eine js-Funktion in der application.js ab
und
bringe link_to bei, einfach ein onclick=“myConfirm()” in das Attribut
mit
aufnehmen. Dazu muss kein DOM-Baum durchsucht werden…
Wegen der Code-Lesbarkeit mache ich mir keine Sorgen - so viel steht in
der
application.js nicht - und inline-JS-Code ist praktisch nicht vorhanden.
Jetzt will ich aber das ganze eingrenzen und gebe als Suchbegriff
noch den Kundennamen und Rechnungsdatum ein. Wie sollte hier meine
Abfrage denn aussehen? Bietet
Activerecord hier schon was an?
Du kannst entweder direkt auf der Assoziation ein find absetzen:
article.invoices.find(:all, :conditions => [’…’])
oder einfach die Assoziation in das obige find joinen:
Article.find(:all, :select => “a.*”, :conditions => [‘name = ? and
i.attr1 = ? and i.attr2 = ?’, params[:articlename], params
[:customer], params[:date_of_purchase]], :from => ‘articles a,
invoices i’)
Das ist an sich keine Spezialitaet von ActiveRecord, sondern nur eine
Abbildung des entsprechenden SQLs, und eine von mehreren Moeglichkeiten.
Ich hatte mir eigentlich was anderes vorgestellt das weniger mit SQL
zu machen aber vorerst ist das eine annehmbare Lösung. Aber das
schreit mir ganz nach einem neuen(?) Plug-in. Wenn ich ein wenig Luft
hab werd ich mir das mal genauer anschauen.
Ich sitze gerade an einem grausamen Problem das ich schon seit ehh
und je vor mich her schiebe bzw. öfters ignoriere.
Jetzt wird es aber akut und ich will wissen ob es hier eine Ruby-like
way-to-do gibt.
Für diese 3 Modelle habe ich eine Suchmaske erstellt. Auf der Maske
sind Suchkriterien wie z.B.:
Customername
Articlename
Invoicenumber
Invoicedate
etc…
Jetzt möchte ich hier z.B. Nach dem Artikel Apfel (passend zu meinem
neuen iMac ) suchen
Die Suchabfrage soll mir eine Liste zeigen mit allen Rechnungen in
dem ein oder mehrere Äpfel enthalten sind.
Jetzt will ich aber das ganze eingrenzen und gebe als Suchbegriff
noch den Kundennamen und Rechnungsdatum ein. Wie sollte hier meine
Abfrage denn aussehen? Bietet
Activerecord hier schon was an?
Dabei ist allerdings zu beachten, dass du nur genau dann ein Ergebnis
bekommst, wenn du den exakten Artikelnamen übergibst sowie das dazu passende
attr1. Ist das wirklich das, was du brauchst? Ansonsten schau dir mal http://wiki.rubyonrails.org/rails/pages/TextSearch an.
Genau das war genau was ich brauch. Das ist ruby-like. Ich nutze die
include Option bereits um Relationen vorzuladen. Es war mir nur nicht
bekannt
dass man in conditions direkt den Tabellennamen angeben kann. Perfekt
damit wäre das jetzt gelöst.
html_options[:confirm]= "Leaving page - input will be lost."
end
super(name, options,html_options,*parameters_for_method_reference)
end
Das funktionierte soweit ganz gut. Nun würde ich jedoch gerne statt der
Standard-confirm-Funktion eine eigene verwenden. (Um gemachte Änderungen
Für die, die eine Lösung interessiert:
Es muss im application_helper zusätzlich die Methode
def_confirm_javascript_function(confirm) überladen werden - Rückgabewert ist
der auszuführende JavaScript-Code…
Keep smiling
yanosz
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.