Forum: Ruby on Rails Form fields cleared out because of validation

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
kai (Guest)
on 2007-05-03 10:04
(Received via mailing list)
Hi there

Implementing my first "update" procedure worked fine.
I took this as a template for a "create" procedure, but that does not
work as expected: when I enter invalid data, the validation stops me
from saving the data, that's working, but all fields are cleared!

Furthermore, also the data is not saved, no error message is dislayed.

Advice is more then welcome!

### Controller Code:
def create_client
    case request.method
    when :get
      @client = Client.new
    when :post
      client = Client.new(params[:client])
      if client.save true
        flash[:notice] = "Client successfully added"
        redirect_to({:controller => 'client', :action => 'overview'},
true)
      else
        flash[:errobj] = 'client'
      end
    end
  end

### Layout Code
 <% if flash[:errobj] -%>
   <%= error_messages_for flash[:errobj] -%>
 <% end %>
kai (Guest)
on 2007-05-07 22:01
(Received via mailing list)
Okay, I am an idiot. But there is still hope because I found out
myself.

Instead of

      client = Client.new(params[:client])

I should have said

      @client = Client.new(params[:client])

............
Rick O. (Guest)
on 2007-05-07 22:14
(Received via mailing list)
> ### Layout Code
>  <% if flash[:errobj] -%>
>    <%= error_messages_for flash[:errobj] -%>
>  <% end %>

If things aren't working the way you expected, debug your code, write
tests, etc.

<%= debug flash[:errobj] %>
<%= flash.inspect %>

Or, get a little acquainted with ruby-debug and just throw a <%
debugger -%> in there.

Flash messages survive a request, like a redirect, but are not
available in the current request.  Since you just render the same
template on invalid models, use flash.now[:errobj], or @errobj.

--
Rick O.
http://lighthouseapp.com
http://weblog.techno-weenie.net
http://mephistoblog.com
This topic is locked and can not be replied to.