Ruby on rails 无法将\u重定向到ruby on rails中的当前\u用户
我是RubyonRails的新手,我试图更新我的用户,但当我的用户更新时,我无法将\u重定向到我当前的\u用户。这是我的控制器:Ruby on rails 无法将\u重定向到ruby on rails中的当前\u用户,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是RubyonRails的新手,我试图更新我的用户,但当我的用户更新时,我无法将\u重定向到我当前的\u用户。这是我的控制器: class WelcomeController < ApplicationController def index @users = (current_user.blank? ? User.all : User.find(:all, :conditions => ["id != ?", current_user.id])) end d
class WelcomeController < ApplicationController
def index
@users = (current_user.blank? ? User.all : User.find(:all, :conditions => ["id != ?", current_user.id]))
end
def create
user = User.login(params[:session][:username], params[:session][:pass])
if user
login user
redirect_to root_url
else
redirect_to welcome_index_path
end
end
def sucess
@user = User.find(params[:id])
@relation = Relation.new
end
def edit
if current_user.update_attributes(:image => params[:image])
logger.debug "image: #{current_user.image}"
if current_user.changed?
redirect_to current_user
else
render 'edit'
end
else
end
end
def destroy
logout
redirect_to root_url
end
end
当我检查日志文件时:
Started POST "/welcome/edit?method=post" for 127.0.0.1 at 2014-11-13 15:09:00 +0700
Processing by WelcomeController#edit as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"XHQeEBjnndipJ8c4TrOnn5Yzh7xqvcEhl4+L7BbGBY0=", "image"=>"Hydrangeas.jpg", "commit"=>"Save", "method"=>"post"}
[1m[35mUser Load (1.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
[1m[36m (0.0ms)[0m [1mbegin transaction[0m
[1m[35mUser Exists (0.0ms)[0m SELECT 1 AS one FROM "users" WHERE ("users"."username" = 'sa1234' AND "users"."id" != 10) LIMIT 1
[1m[36m (1.0ms)[0m [1mUPDATE "users" SET "image" = 'Hydrangeas.jpg', "updated_at" = '2014-11-13 08:09:00.576402' WHERE "users"."id" = 10[0m
[1m[35m (157.0ms)[0m commit transaction
[1m[36mUser Load (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
image: Hydrangeas.jpg
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
[1m[36mCACHE (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
Rendered welcome/edit.html.erb within layouts/application (4.0ms)
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
[1m[36mCACHE (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
[1m[36mCACHE (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
Completed 200 OK in 219.0ms (Views: 52.0ms | ActiveRecord: 159.0ms)
我不知道如果我的当前用户更新未成功,我的应用程序如何渲染编辑,请!帮我解决这个问题:
更新:
@Jakob S,这是我尝试你的代码时的日志:
Started GET "/welcome/edit" for 127.0.0.1 at 2014-11-13 15:21:57 +0700
Processing by WelcomeController#edit as HTML
[1m[36mUser Load (1.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
[1m[35m (0.0ms)[0m begin transaction
[1m[36mUser Exists (1.0ms)[0m [1mSELECT 1 AS one FROM "users" WHERE ("users"."username" = 'sa1234' AND "users"."id" != 10) LIMIT 1[0m
[1m[35m (0.0ms)[0m commit transaction
[1m[36mCACHE (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
image:
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
Redirected to http://localhost:3000/users/10
Completed 302 Found in 5.0ms (ActiveRecord: 2.0ms)
Started GET "/users/10" for 127.0.0.1 at 2014-11-13 15:21:57 +0700
Processing by WelcomeController#sucess as HTML
Parameters: {"id"=>"10"}
[1m[36mUser Load (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", "10"]]
[1m[35mUser Load (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
[1m[36mCACHE (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
[1m[35mUser Load (0.0ms)[0m SELECT "users".* FROM "users" INNER JOIN "relations" ON "users"."id" = "relations"."following_id" WHERE "relations"."follower_id" = 10
[1m[36mUser Load (0.0ms)[0m [1mSELECT "users".* FROM "users" INNER JOIN "relations" ON "users"."id" = "relations"."follower_id" WHERE "relations"."following_id" = 10[0m
Rendered welcome/sucess.html.erb within layouts/application (7.0ms)
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
[1m[36mCACHE (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
[1m[36mCACHE (0.0ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1[0m [["id", 10]]
[1m[35mCACHE (0.0ms)[0m SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 10]]
Completed 200 OK in 39.0ms (Views: 37.0ms | ActiveRecord: 0.0ms)
当前用户已更改?是你的问题的根源
变了?是Rails的一部分。模型脏状态,即在保存模型时重置已更改的属性
更新属性。因此,当前用户发生了变化?在更新_属性之后,将始终为false,因为自上次保存后模型未更改
是否删除已更改的支票?及其相关的渲染编辑部分,您应该可以开始了:
def edit
if current_user.update_attributes(:image => params[:image])
redirect_to current_user
else
render 'edit'
end
end
额外提示:一般来说,像您正在实施的更新资源的操作通常会包含在更新操作中。编辑操作通常用于呈现用于更改资源的UI。请。发布你的控制器和路线的完整代码。rb。我编辑了我的问题,请查看。请发布相关操作的完整日志。必须有相关的输出上面的图像:Desert.jpg行。我张贴了我的日志文件,请看它甚至不能去我的编辑页面。我用你的代码发布了我的日志,请看!粗略地看一下日志,您确实可以转到编辑页面,它实际上重定向到当前用户。据我所知,一切正常。如果您还有其他问题,请随时发布另一个问题,并提供重现此新问题所需的详细信息。我很乐意尝试回答这个问题,但是在这个问题上回答会变得太麻烦。
def edit
if current_user.update_attributes(:image => params[:image])
redirect_to current_user
else
render 'edit'
end
end