I switched over to form_for as you suggested and that seems to be 
working much better but I am still running into a problem.  The form 
appears to be submitting the correct data but I am having a problem with 
selecting the record correctly.  Specifically, in my controller,

  def update

    @book = Book.find(:first, :conditions => ["barcode = 
?",params[:barcode]])

    @book.update_attributes(params[:book])
    redirect_to "/books"

  end

If I replace the params[:barcode] with a real barcode (e.g. 
Book.find(:first, :conditions => {'barcode' => ['123456789']})) number 
the form processes successfully and updates my database.  When I try 
from the form however I am getting a null value error even though I can 
see the parameters being passed along in the logs so I am not sure why 
they are not available to the model...

Processing BooksController#update (for 10.0.1.65 at 2010-03-30 14:01:07) 
[POST]
  Parameters: {"commit"=>"Update", "action"=>"update", 
"authenticity_token"=>"vq6j9DJ57+AP4kbdbFHjeqeXHiYJDr9RT+zwHVCJ7mI=", 
"book"=>{"bounceback"=>"1", "barcode"=>"123456789"}, 
"controller"=>"books"}

[4;36;1mBook Load (0.6ms)[0m   [0;1mSELECT * FROM `books` WHERE (barcode 
= NULL) LIMIT 1[0m

I have tried every combination of :conditions I can think of but I don't 
seem to be able to get it to work correctly.  Thanks!

Stephen

Colin Law wrote:
> On 29 March 2010 21:44, Stephen None <[email protected]> wrote:
>> the update page rather than just processing the update method.  I know
>> <p>
>>  <%= submit_tag "Update" %>
>> </p>
>> <% end -%>
> 
> As I said it is easier to use the form_for method.  Just copy the
> existing edit view code (which presumably includes the barcode and
> checkout values) and remove from the form the fields that you do not
> want.
> 
> The problem with the submit is that you are not putting the data in
> the params correctly.  Try doing an edit and look in development.log
> to see what the params are, then do the same with yours and compare
> them.  Your fields should be inside a hash for the complete object.
> But  as I said if you use form_for it will all be done for you.  I
> don't understand what problem you are having with form_for, what has
> it got to do with loading the edit page?  You are using your new page
> instead of the edit page in this case.
> 
> Colin

-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to