0

Рубин на рельсы 3.1.3маршрутизации ошибка альтернативного метода обновления в рубине на рельсах

Я пытаюсь выяснить правильный маршрут к моему методу change_password моего users_controller.

В настоящее время я получаю эту ошибку:

Routing Error 

No route matches {:action=>"change_password", :controller=>"users", :format=>#<User id: 1, email: "[email protected]", encrypted_password: "$2a$10$lgmrRTYFUUrWStLl1Y.Oo.LqQ2Ybxa29YkDFw61/KG9O...", password_salt: "$2a$10$lgmrRTYFUUrWStLl1Y.Oo.", username: "foobar", created_at: "2012-01-07 23:02:29", updated_at: "2012-01-13 11:16:45", password_reset_token: nil, password_reset_sent_at: "2012-01-08 12:23:30">} 

В users_controller:

def change_password 
     @user = current_user 
     @user_password_matches = User.authenticate(@user.email, params[:current_password]) 
     if @user_password_matches.update_attributes(params[:user]) 
     login @user 
     format.js { render :js => "window.location = '#{settings_account_path}'" } 
     flash[:success] = "Password updated" 
     else 
     format.js { render :form_errors } 

     end 
    end 

Внутренний вид:

<%= form_for @user, :remote => true, :url => change_password_path(@user) do |f| %> 
Current password: <%= password_field_tag :current_password, :placeholder => "Password" %><br /> 
New password: <%= f.password_field :password, :placeholder => "Password" %><br /> 
Confirm password: <%= f.password_field :password_confirmation, :placeholder => "Confirm Password" %><br /> 
<%= f.submit 'update' %> 

маршруты:

resources :users do 
    member do 
    put :change_password 
    end 
end 
    resources :users 
    resources :sessions 
    resources :passwords 
    resources :profiles 


    root :to     => "users#new" 
    match 'success'   => "users#success" 
    match 'login'    => "sessions#new" 
    match 'logout'    => "sessions#destroy" 
    match 'reset_password'  => "passwords#new" 
    match 'setup_new_password' => "passwords#edit" 
    match 'settings', :to  => "users#settings" 


    match "/settings/account", :to => "users#account" 
    match "/settings/edit_profile", :to => "profiles#edit_profile" 


    match '/:username', :controller => 'users', :action => 'show' 

Все, что я намереваюсь сделать, это только обновить атрибуты в db, если пользователь вводит пароль (: current_password) успешно проходит аутентификацию (тот же метод, который я использую для входа в систему, который подтверждает, что пароль соответствует тому, который хранится в db) и если это не принимать Params пользователей формы, в этом случае вновь хэшированного пароль и хранить его в БД ..

Сердечные приветы

+0

Ваши три вопроса с похожими названиями тесно связаны? –

+0

какой вывод «рейк-маршруты» дают на терминале? –

ответ

2

Вы получили неправильный путь к файлу в вашем виде, это change_password_user_path, не change_password_path.

Используйте rake routes, чтобы просмотреть список ваших маршрутов. Кроме того, для этого вам не нужен специальный маршрут, проверьте мой ответ на предыдущий вопрос.

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