hy vọng ai đó ở đây có thể chỉ cho tôi đúng hướng.đường ray update_attributes trả về false khi cố cập nhật giá trị db
Tôi có bộ điều khiển Cập nhật def chạy "update_attributes". Hiện tại nó trả về false, không có thông báo lỗi. Tôi khá mới với Ruby, nhưng không phải để viết mã, và điều này đã khiến tôi bối rối trong một vài ngày! Tôi đang cố gắng để có được mô hình User và db được cập nhật với các giá trị được chỉ định bên dưới.
def update
#get currently logged in user
@user = current_user
#update user params based on edit form...
if @user.update_attributes(params[:user])
redirect_to profile_path, :notice => "Successfully updated profile."
else
render :action => 'edit'
end
end
tôi chỉnh sửa def ....
def edit
@user = current_user
end
Hình thức gửi sau để phương pháp cập nhật này:
--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
utf8: ✓
_method: put
authenticity_token: 9T4ihVI0p8j7pZEFxof3Bfahi2a+o3BPmtXJDnfHT4o=
user: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
first_name: Amanda
last_name: Ross
is_owner: '1'
email: [email protected]
commit: Update
action: update
controller: users
id: '20'
Và params [: hướng dẫn] trả về:
{"first_name"=>"Amanda", "last_name"=>"Ross", "is_owner"=>"1", "email"=>"[email protected]"}
Tất cả các trường này đều có thể truy cập được Mô hình và tôi có thể tạo người dùng mà không gặp bất kỳ sự cố nào.
đây là đầu ra development.log (xin lỗi đó là một chút lộn xộn) ....
Started PUT "https://stackoverflow.com/users/20" for 127.0.0.1 at 2012-04-17 10:39:29 +0100
Processing by UsersController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"9T4ihVI0p8j7pZEFxof3Bfahi2a+o3BPmtXJDnfHT4o=", "user"=> {"first_name"=>"Amanda", "last_name"=>"Ross", "is_owner"=>"1", "email"=>"[email protected]"}, "commit"=>"Update", "id"=>"20"}
[1m[36mUser Load (1.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = 20 LIMIT 1[0m
>>>>>>>>>>>>
{"first_name"=>"Amanda", "last_name"=>"Ross", "is_owner"=>"1", "email"=>"[email protected]"}
[1m[35m (0.0ms)[0m begin transaction
[1m[36mUser Exists (0.0ms)[0m [1mSELECT 1 FROM "users" WHERE (LOWER("users"."email") = LOWER('[email protected]') AND "users"."id" != 20) LIMIT 1[0m
[1m[35mUser Exists (0.0ms)[0m SELECT 1 FROM "users" WHERE ("users"."email" = '[email protected]' AND "users"."id" != 20) LIMIT 1
[1m[36m (0.0ms)[0m [1mrollback transaction[0m
Rendered users/_form.html.erb (7.0ms)
Rendered users/edit.html.erb within layouts/application (10.0ms)
Rendered layouts/_includes.html.erb (30.0ms)
thể bất cứ ai có thể giúp chỉ ra nơi tôi sẽ sai, xin vui lòng?
Cảm ơn trước!
Bạn đã kiểm tra 'development.log' chưa? – Alex
Một mô tả về thông báo lỗi sẽ tốt đẹp - không biết làm thế nào bạn chỉ nhận được 'false' – Jonathan
thêm output.log đầu ra trong bài chính .... (chỉ nhận được một rollback) – steve