Schienen: update_column funktioniert, aber nicht update_attributes

Habe ich ein einfaches Modell:

class Reply < ActiveRecord::Base
  attr_accessible :body
  belongs_to :post
end

In meinem controller, habe ich ein einfaches update-Methode:

def update
  @reply = Reply.find(params[:id])
  if @reply.update_attributes!(params[:reply])
    render :js => "alert('I am trying to update!')"
  else
    render :js => "alert('<%= @reply.errors %>')"
  end
end

Nicht dies einen Fehler auslösen, aber weder sieht es eigentlich update-die Antwort. Stattdessen bekomme ich den "ich bin versucht, zu aktualisieren!" - Nachricht, wie alles funktionierte. Aber wenn ich die Seite neu laden und sehen Sie an der Antwort, es hat den gleichen text. Es eigentlich nicht aktualisiert worden. Wenn ich ersetzen update_attributes mit:

@reply.update_column(:body, params[:reply][:body])

Funktioniert es einwandfrei. Wenn ich:

@reply.update_attribute(:body, params[:reply][:body])

Es wieder einmal nicht funktioniert. Keine Ahnung, was Los ist?

In mein log, ich habe dieses:

Started PUT "/posts/2/replies/20" for 127.0.0.1 at 2013-01-19 10:39:57 -0600
Processing by RepliesController#update as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"Xot7E+ldXiBm0hVvw5XUP/U5guJU2g8e4QaLbDVGzDE=", "reply"=>{"body"=>"Updated text."}, "commit"=>"Submit Revision", "post_id"=>"2", "id"=>"20"
[1m[35mUser Load (1.0ms)[0m  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
[1m[36mReply Load (0.0ms)[0m  [1mSELECT `replies`.* FROM `replies` WHERE `replies`.`id` = 20 LIMIT 1[0m
[1m[35m (1.0ms)[0m  BEGIN
[1m[36mPost Load (0.0ms)[0m  [1mSELECT `posts`.* FROM `posts` WHERE `posts`.`id` = 2 LIMIT 1[0m
[1m[35m (0.0ms)[0m  COMMIT
Rendered replies/_reply_content.html.erb (502.0ms)
Rendered replies/update.js.erb (505.0ms)
Completed 200 OK in 849ms (Views: 484.0ms | ActiveRecord: 94.0ms)

InformationsquelleAutor der Frage nullnullnull | 2013-01-19

Schreibe einen Kommentar