我正在使用设计,我试图让用户修改他们的信息而不提供他们的信息。我遵循教程https://github.com/plataformatec/devise/wiki/How-To%3a-Allow-users-to-edit-their-account-without-providing-a-password。Rails没有密码设计
我有这样的链接,允许用户更改自己的设置
<%= link_to "Account Settings", edit_user_registration_path(current_user) %>
我做什么他的后续
rails g controller Registration
在注册控制器替换该
class RegistrationsController < Devise::RegistrationsController
def update
@user = User.find(current_user.id)
email_changed = @user.email != params[:user][:email]
password_changed = !params[:user][:password].empty?
successfully_updated = if email_changed or password_changed
@user.update_with_password(params[:user])
else
@user.update_without_password(params[:user])
end
if successfully_updated
set_flash_message :notice, :updated
# Sign in the user bypassing validation in case his password changed
sign_in @user, :bypass => true
redirect_to after_update_path_for(@user)
else
render "edit"
end
end
end
内容
而在route.rb文件中,我做了这个
devise_for :users, :controllers => { :registrations => "registrations" }
但它仍将我带到文件夹/views/devise/registration/edit.erb.html,而不是将我带到/views/registrations/edit.erb.html。我也重新启动服务器,我的电脑,但不知道还能做什么
更新:注(客户=用户)
Started GET "/customers/edit.2" for 127.0.0.1 at 2012-12-09 20:06:03 -0500
Processing by Devise::RegistrationsController#edit as
[1m[35mCustomer Load (0.3ms)[0m SELECT `customers`.* FROM `customers` WHERE `customers`.`id` = 2 LIMIT 1
[1m[36mPage Load (0.2ms)[0m [1mSELECT `pages`.* FROM `pages` [0m
[1m[35mTag Load (0.2ms)[0m SELECT `tags`.* FROM `tags`
Rendered devise/registrations/edit.html.erb within layouts/application (0.1ms)
Rendered layouts/_shim.html.erb (0.0ms)
Rendered layouts/_iewrap.html.erb (0.0ms)
Rendered layouts/_header.html.erb (1.1ms)
Rendered layouts/_search_tags.html.erb (0.0ms)
Rendered layouts/_navigation.html.erb (0.8ms)
Rendered layouts/_thirdcol.html.erb (0.0ms)
Rendered pages/_link.html.erb (0.0ms)
Rendered layouts/_footer.html.erb (0.4ms)
Completed 200 OK in 41ms (Views: 36.4ms | ActiveRecord: 0.7ms)
Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-12-09 20:06:04 -0500
Served asset /application.css - 304 Not Modified (5ms)
Started GET "/assets/activity_managers.css?body=1" for 127.0.0.1 at 2012-12-09 20:06:04 -0500
Served asset /activity_managers.css - 304 Not Modified (0ms)
这是通向我到
http://localhost:3000/customers/edit.2
对不起,你是正确的,文件名是edit.html.erb这是我的这个论坛的拼写错误,第二个链接我尝试你的,但仍然处理默认的设计视图。我还注意到,我的编辑文件只有测试目的的html代码,也许会导致一个问题。 – Jseb
你使用命令'rails generate devise:views'来生成你的视图吗? – Ashitaka
如果你这样做了,你必须确保你在'app \ views \ devise \ registrations'中没有'edit.html.erb'文件。 – Ashitaka