我是Rails的新手。 我的应用程序中有一个注册页面。也是个人资料页面。我正在尝试创建一个编辑页面,我可以在其中编辑用户的电子邮件,密码和所有内容。我想用设计做所有这些.. 我到目前为止。这是我的编辑页面。
<div class="edit_profile_page">
<%= form_for(current_user, :url => '/update', :html => { :method => :put }) do |f| %>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
<%= f.password_field :password, :autocomplete => "off" %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
<%= f.password_field :current_password %></div>
<div><%= f.submit "Update" %></div>
<% end %>
</div>
我被困在这里。我应该传递什么网址..此外,如果此网址指向方法说
def update_profile
end
我应该在该方法中写什么,以便密码将像注册时发生的那样更新。
或者
设备内部有一个编辑页面。我应该如何写我的路线到达那里。
答案 0 :(得分:1)
您还可以创建自己的ProfilesController
,例如:
路线:
#routes.rb
resource :profile
控制器:
# coding: utf-8
class ProfilesController < ApplicationController
before_filter :authenticate_user!
def show
@user=current_user
@user.email = nil unless @user.email.scan('@example.com').empty?
render 'devise/profile/edit'
end
def update
@user=current_user
if @user.update_attributes(params[:user])
sign_in 'user', @user, :bypass => true
flash[:notice] = t('users.profile.edit.updated')
respond_to do |format|
format.html { redirect_to '/'}
end
else
render 'devise/profile/edit'
end
end
end
浏览
#views/devise/profile/edit.html.haml
%h3
= t('users.profile.basic_settings')
= simple_form_for @user, :url => profile_path, :html => { :method => :put } do |f|
-#= f.error_messages
= f.input :name, :placeholder=>t('activerecord.placeholders.name')
= f.input :email, :placeholder=>t('activerecord.placeholders.email')
= f.submit t('users.profile.change_name'), :class => "btn btn-primary"
= t('users.profile.change_password')
= simple_form_for @user, :url => profile_path, :html => { :method => :put } do |f|
-#= f.error_messages
= f.input :password , :error_html => { :id => "password_error"}
= f.input :password_confirmation
= f.submit t('users.profile.change_password'), :class => "btn btn-primary"