自定义配置文件编辑页设计宝石

时间:2014-05-13 10:13:40

标签: ruby-on-rails ruby ruby-on-rails-4 devise

我是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

我应该在该方法中写什么,以便密码将像注册时发生的那样更新。

或者

设备内部有一个编辑页面。我应该如何写我的路线到达那里。

1 个答案:

答案 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"