Habe es nun hinbekommen, dass er die richtige Vorbelegung findet.
Habe in den select tags statt :existing_damga  "existing_damage"
geschrieben und jetzt übernimmt er die richtigen werte.

jedoch sendet er das form nach einer fehlerhaften validierung immer noch
nicht ab. 
und im server log sehe ich, dass er bei update_attributes ein nil object
bekommt. hier der controller code:

def update
    @object = Object.find(:first, :conditions => ["activation_hash = ?",
params[:activation_hash]])
    @new_activation_hash = //neuer Hash wird generiert
    unless params[:object].nil?
      if @object.update_attributes(params[:object])
        if @object.update_attribute(:activation_hash,
@new_activation_hash)
          ServiceMail.deliver_confirmation({:object => @object})
        end
      end
    end
  end

und der error:

NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.update_attributes):
  app/controllers/confirmation_controller.rb:40:in `update'
  /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
  /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
  /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
  /usr/lib/ruby/1.8/webrick/server.rb:95:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:92:in `each'
  /usr/lib/ruby/1.8/webrick/server.rb:92:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:23:in `start'
  /usr/lib/ruby/1.8/webrick/server.rb:82:in `start'

Rendered rescues/_trace (34.1ms)
Rendered rescues/_request_and_response (0.7ms)
Rendering rescues/layout (internal_server_error)

grundsätzlich überprüfe ich ja mit der unless abfrage, dass das object
nicht nil ist. und am server log sehe ich auch, dass alle parameter
richtig gesendet werden.

zur validierung:
verwende diese validierung:
http://tetlaw.id.au/view/javascript/really-easy-field-validation

und binde sie folgendermaßen ein:

<script type="text/javascript">
  var wizard = new Wizard();
  wizard.addPage("<%= @title %>", "wizard_<%= @number %>");
  wizard.addValidation('wizard_form');
  wizard.showPage(0);
</script>

der wizard ist eine javascript klasse java script klasse die
benutzerdefinierte validierungsmethoden einbindet.

so wie ich das verstehe, wird ja wenn die validierung fehlschlägt das
formular nicht submited als update nicht aufgerufen. warum wird das
object dann nil?

hoffe ihr könnt mir helfen

Mfg Stefan

Am Mittwoch, den 20.05.2009, 00:12 +0200 schrieb Thomas R. Koll:
> Servus Stefan,
> 
> unter irc.freenode.net#rubystammtisch ist unsere Wiener Clique zu  
> finden.
> 
> 
> Am 19.05.2009 um 23:07 schrieb Stefan Feigl:
> >
> > <% remote_form_for(:object, :condition => "wizard.validate()", :url =>
> > url_for({ :action => "update", :activation_hash =>
> > @activation_hash}), :html => {:id => "wizard_form"}) do |f| %>
> 
> Jetzt fang ich mal zum philosphieren an...
> Also, besser alles geht auch ohne JS noch super, daher
> lieber ein form_for und das JS kannst du dann in feinster
> obstrusive-JS Manier einfach dranbinden.
> Ich hätte eine Fünf-Zeilen-Lösung für JQuery, aber prototype
> sollte da ned komplizierter sein.
> 
> 
> >        <%= f.label :birthdate, "Geburtsdatum" %><br />
> >        <%= f.date_select :birthdate, :start_year =>
> > DateTime.now.year, :end_year => 1930, :use_month_numbers => true %>
> 
> Ich kann da jetzt nix falsches feststellen, ganz sicher dass ein
> Wert drin ist? Zum testen mal ein text_field
> 
> 
> >        <%= f.label :existing_damage, "Haben sich Schäden ereignet, die
> > noch nicht einer Versicherung gemeldet wurden?" %><br />
> >        <%= f.select :existing_damage, ["Ja", "Nein"], {:id =>
> > "object_existing_damage", :class => "validate-selection"} %>
> 
> API sagt:
> select(object, method, choices, options = {}, html_options = {})
> also bei dir dann:
> f.select :existing_damage, ["Ja", "Nein"], {}, {:id =>  
> "object_existing_damage", :class => "validate-selection"}
> 
> 
> 
> > sämtliche text_fields und text_areas werden ja korrekt mit den daten  
> > des
> > datensatzes vorbelegt. die sleect und dateselects jedenfalls haben als
> > vorbelegung den ersten listeneintrag.
> >
> > ich hoffe ich hab mich klar und verständlich ausgedrückt und das ihr  
> > mir
> > helfen könnt.
> 
> Hätt besser sein können, aber ich bin ja noch wach :)
> 
> ciao, tom
> 
> --
> Thomas R. "TomK32" Koll || http://tomk32.de || http://ananasblau.com
> just a geek trying to change the world
> Skype: TomK32 || Mail: [email protected]
> http://flickr.com/people/tomk32

_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an