2014-12-18 6 views
1

Мне удалось настроить программу и настроить отдельную страницу показа для пользователей, создав Контроллер пользователей. Теперь я хочу иметь возможность создавать страницу редактирования с полями формы, отличными от электронной почты, как это сейчас. Поэтому, действительно, мне нужна страница профиля редактирования в дополнение к моей странице настроек учетной записи редактирования.Создание страницы редактирования пользователя с помощью Devise

Вот мой код:

class UsersController < ApplicationController 
def show 
    @user = User.find(params[:id]) 
end 

end 

# Config/routes 

Rails.application.routes.draw do 

devise_for :users 
get 'users/:id' => 'users#show', as: :user 

get 'users/editprofile' 

resources :users, :only => [:show] 

resources :postings 

root 'postings#index' 

get 'pages/about' 

get 'pages/contact' 

get 'pages/blog' 


# schema 

create_table "users", force: true do |t| 
t.string "email",        default: "", null: false 
t.string "encrypted_password",     default: "", null: false 
t.string "reset_password_token" 
t.datetime "reset_password_sent_at" 
t.datetime "remember_created_at" 
t.integer "sign_in_count",      default: 0, null: false 
t.datetime "current_sign_in_at" 
t.datetime "last_sign_in_at" 
t.string "current_sign_in_ip" 
t.string "last_sign_in_ip" 
t.datetime "created_at" 
t.datetime "updated_at" 
t.string "preferred_work_type" 
t.string "preferred_location" 
t.string "preferred_pay_rate" 
t.string "preferred_environment" 
t.string "company_name" 
t.string "company_title" 
t.string "company_employment_date" 
t.string "company_work_environment" 
t.string "college_school_name" 
t.string "college_major" 
t.string "college_date" 
t.string "college_degree" 
t.string "course_name" 
t.string "course_date" 
t.string "primary_skills" 
t.string "secondary_skills" 
t.string "activity_name" 
t.string "activity_date" 
t.text  "interview_questions" 
t.string "professional_reference_name" 
t.string "professional_reference_relationship" 
t.string "professional_reference_phone_number" 
t.string "preferred_text_editor" 
t.string "first_name" 
t.string "last_name" 

конец

ответ

0

изменения REQUIED в контроллере пользователей

class UsersController < ApplicationController 

    before_filter :authenticate_user! 

    def edit_profile 
    @user = current_user 
    end 

    def update_profile 
    @user = User.find(current_user.id) 
    if @user.update(user_params) 
     redirect_to root_path 
    else 
     render "edit" 
    end 
    end 

    private 

    def user_params 
    params.required(:user).permit(:xxx, :yyy) 
    end 
end 

Маршруты изменения в файле

resources :users, only: [:show] do 
    collection do 
    get 'edit_profile' # this will show your view 
    patch 'update_profile' # update value in database 
    end 
end 

Чтобы обновить пароль в обычае посмотри му st запросить использование формы пароля. Для этого вы должны добавить :current_password в разрешенные параметры и просмотреть.

Также вместо @user.update(user_params) вы должны использовать @user.update_with_password(user_params). и снова войдите в систему после update_with_password с sign_in @user, :bypass => true

+0

Спасибо Dipak. Ответ сработал, теперь у меня есть страница редактирования профиля. Это потрясающе! – MattyMatt

Смежные вопросы