Ok. Folgendes Update:
Die Select Tagas werden beim erstmaligen aufrufen des edit links nicht
richtig vorbefüllt. wenn ich sie dann richtig einstelle und das formualr
absende und dann erneut versuche zu ändern werden die selects richtig
befüllt. jemand eine idee wie ich den fehler suchen könnte?

hab jetzt schon fiolgendes gemacht.
ich lass mir auf der bearbeitungsseite mit dem form wo die selects
vorbelegt werden sollen folgendes ausgeben:

<% @object.attributes.each { |key, value| %>
        <%= key %> | <%= value %>
<% } %>

um zu  überprüfen ob das object die richtigen daten beinhaltet.
antwort: JA.

jedoch werden sie nicht in den select tags vorbelegt.
wenn ich die select tags jetzt auf die richtigen werte ändere, und das
formular absende, las sich mir auf der folgenden seite mit der
bestätigungsmeldung, dass die daten geändert wurden folgendes ausgeben:

<% @params_hash.each { |key, value| %>
<%= key %> | <%= value %>
<% } %>

und im controller in der update action an die das formular gesendet
wird:

@params_hash = params[:object]

auch hier zeigt er mir dann brav sämtliche submit daten richtig an. bei
einem erneuten ändern aufruf werden dann die selects richtig vorbelegt.

bin drauf und dran das ganze projekt zu werfen. langsam reichts mir.
entweder bin ich zu blöd 1 und 1 zusammen zu zählen oder es is ein rails
internes problem. wobei ich selbst eher glaube, dass ersteres zutrifft.

weiters habe ich noch immer das problem, dass das formular bei einem
fehler rein optisch nicht gesendet wird und die error felder markiert
werden und der focus draufgesetzt wird. im hintergrund jedoch die daten
sehr wohl gesendet werden und in die datenbank gespeichert. nach der
speicherung wird ein erneutes bestätigungsmail geshickt mit einem neuen
activation_hash. dieser neue hash überschreibt nach dem speichern auch
den alten von dem datensatz. nun siehts aber ja für den user so aus, als
ob das form nicht gesendet wurde wegen den errors. wenn der die dann
ausbessert und erneut senden will siehts für ihn "manchmal" wieder nach
nix aus und "manchmal" krieg ich den fehler mit nil.update_attributes,
da ja kein object gefunden werden konnte mit dem alten activation hash,
da dieser schon beim ersten "verdeckten" absenden geändert wurde.

bitte um hilfe und/oder tips

Am Mittwoch, den 20.05.2009, 10:56 +0200 schrieb Stefan Feigl:
> ok langsam dreh ich durch.
> hab jetzt die action im controller geändert folgendermaßen:
> 
> def index
>     if !params[:activation].nil?
>       @title = "Bestätigung"
>       @number = 1
>       @object = Object.find(:first, :conditions => ["activation_hash
> = ?", params[:activation]])
>       if @object.nil?
>         render :text => "Fehler bei @object.nil? in activation"
>       else
>         if @object.activated == "ja"
>           @title = "Bereits aktiviert"
>           @number = 5
>         else
>           if @object.update_attribute(:activated, "ja")
>             ServiceMail.deliver_notification({:object => "@object"})
>           else
>             render :text => "Fehler in update_attribute(:activate, \"ja
> \")"
>           end
>         end
>       end
>     end
> 
>     if !params[:edit].nil?
>       @title = "Datenänderung"
>       @number = 2
>       @activation_hash = params[:edit]
>       @object = Object.find(:first, :conditions => ["activation_hash
> = ?", @activation_hash])
>       if @object.nil?
>         render :text => "Fehler bei @object.nil? in activation"
>       else
>         if @object.activated == "ja"
>           @title = "Keine Änderung möglich"
>           @number = 5
>         end
>       end
>     end
>   end
> 
> und jetzt werden nur mehr "manchmal" die select tags richtig ausgefüllt
> und manchmal nicht. weiters habe ich einen neuen error:
> 
> ActiveRecord::MultiparameterAssignmentErrors (1 error(s) on assignment
> of multiparameter attributes):
>   app/controllers/confirmation_controller.rb:75: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'
> 
> hier noch die action update
> 
> def update
>     render :text => "#{params}"
>     if params[:activation_hash].nil?
>       render :text => "params[:activation_hash] ist nil in action
> update"
>     else
>     @object = Object.find(:first, :conditions => ["activation_hash = ?",
> params[:activation_hash]])
>       if params[:object].nil?
>         render :text => "params[:object] ist nil in update"
>       else
>         if @object.update_attributes(params[:object])
>           @new_activation_hash = //Generierung neuer activation_hash
>           if @object.update_attribute(:activation_hash,
> @new_activation_hash)
>             ServiceMail.deliver_confirmation({:object => @object})
>           else
>             render :text => "Fehler bei
> update_attribute(:activation_hash, @new_activation_hash) in update"
>           end
>         else
>           render :text => "Fehler bei update_attributes(params[:object])
> in update"
>         end
>       end
>     end
>   end
> 
> hoffe ich geb euch genug/die richtigen informationen.
> 
> mfg stefan
> 
> Am Mittwoch, den 20.05.2009, 09:32 +0200 schrieb Codeblogger:
> > Hallo,
> > 
> > 
> > @object ist bei Dir nil.
> > 
> > 
> > Aus meiner Sicht klappt da schon die erste Zeile
> > 
> > 
> > @object = Object.find(:first, :conditions => ["activation_hash
> > = ?", params[:activation_hash]])
> > 
> > 
> > nicht.
> > 
> > 
> > Wie sieht denn der Parameter activation_hash bei Dir aus. Wird der
> > übergeben?
> > 
> > 
> > Außerdem prüft Dein unless-Statement nicht die Variable @object,
> > sondern die Parameter params[:object].
> > 
> > 
> > Eventuell willst du eher sowas wie
> > 
> > 
> > unless @object
> >   # ...
> > end
> > 
> > 
> > Viele Grüße
> > Nicolai
> > _______________________________________________
> > rubyonrails-ug mailing list
> > [email protected]
> > http://mailman.headflash.com/listinfo/rubyonrails-ug
> 
> _______________________________________________
> rubyonrails-ug mailing list
> [email protected]
> http://mailman.headflash.com/listinfo/rubyonrails-ug

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

Antwort per Email an