- jQuery ist irgendwie unobtrusiv und schlank
- die Mobilplattform, mit der ich grade angefangen habe zu experimentieren benutzt jQuery
- für Rails gibt es jRails, wenn man will
Zeit für einen Wechsel! Ich fang’ mit dem laufenden Railsprojekt an.
Um die gewohnten Helfer in Rails und RJS weiter zu unterstützen und den Migrationsaufwand klein zu halten installiere ich jRails:
script/plugin install http://ennerchi.googlecode.com/svn/trunk/plugins/jrails
Manuell würde man jetzt die …/application.html.erb ändern:
1 2 3 |
<script src="/javascripts/jquery.js" type="text/javascript"></script> <script src="/javascripts/jquery-ui.js" type="text/javascript"></script> <script src="/javascripts/jrails.js" type="text/javascript"></script> |
Falls man allerdings die übliche Zeile zum Einbetten der Skripte verwendet:
<%= javascript_include_tag :defaults, :cache => 'jquery' %> |
ist es damit schon getan – anstelle der Prototype-Files werden nun die neuen geladen. Das
:cache => 'jquery'
veranlasst Rails in der Produktion die Skripte zu einer einzigen .js-Datei zusammenzufassen, um http-Requests zu sparen.
Aus unklaren Gründen funktioniert die Sache mit dem cache… in der Produktivumgebung gut, allerdings führt sie in meiner Selenium-Testumgebung zu Problemen. Gelegentlich tauchen solche Fehler auf:
$("#project_active_1").delayedObserver is not a function
Timingproblem? Deshalb deaktiviere ich das Caching erstmal wieder.
Einiges anders
Hier folgen ein paar Änderungen, die ich anbringen musste, um die Tests zu passieren:
Alle Helferaufrufe benötigen nun ein # für ids im Selektor – die waren vorher nicht nötig:
<%= link_to_function "Person anlegen", "$('#personselect').toggle();" %> |
.up() wird .parent() oder .parents():
1 2 3 4 |
<div class="delme"> <p> <%= link_to_function "<img alt='Bild' src='delete.png' />", "$(this).up('.delme').remove()" %> |
1 2 3 4 |
<div class="delme"> <p> <%= link_to_function "<img alt='Bild' src='delete.png' />", "$(this).parents('.delme').remove()" %> |
.value= wird .val()
$('#answer_#{answer.id}_blank_value_date').value = '1'; |
$('#answer_#{answer.id}_blank_value_date').val('1'); |
Der Autocompleter streikt
Der autocompleter ist ja schon vor längerer Zeit in ein Plugin ausgegliedert worden und mein Viewcode
1 2 3 4 5 6 7 8 |
<script type="text/javascript"> //<![CDATA[ var answer_<%= answer.id -%>_auto_completer = new Ajax.Autocompleter( 'answer_<%= answer.id -%>', 'answer_<%= answer.id -%>_auto_complete', '/projects/<%= @project.id -%>/proforms/auto_complete_for_answer_id', {method:'get'}) //]]> </script> |
erzeugt eine Fehlermeldung “Ajax is not defined” im Firebug. Arghh, na ich denke, das wird eigener Post.