Ошибка при попытке использовать альтернативный метод обновления в ruby ​​на рельсах - PullRequest
0 голосов
/ 13 января 2012

Я с трудом пытаюсь отследить ошибку.Я использую отдельный метод обновления для изменения паролей моих пользователей, когда они вошли в систему. Я разместил код ниже.

В users_controller:

def change_password
      @user = current_user
      @user_password_matches = User.authenticate(current_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, 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'

Ошибка:

SyntaxError in Users#account

Showing /Users/greg/site/app/views/users/account.html.erb where line #27 raised:

/Users/greg/site/app/views/users/account.html.erb:27: syntax error, unexpected keyword_do_block, expecting tASSOC
...> true, change_password_path do |f| @output_buffer.safe_conc...
...                               ^
/Users/greg/site/app/views/users/account.html.erb:51: syntax error, unexpected keyword_ensure, expecting $end
Extracted source (around line #27):

24:     </div>
25: <h3><a href="#">Change Password</a></h3>
26:     <div>
27:         <p> <%= form_for @user, :remote => true, change_password_path do |f| %>
28: Current password: <%= password_field_tag :current_password, :placeholder => "Password"  %><br />
29: New password: <%= f.password_field :password, :placeholder => "Password"  %><br />
30: Confirm password: <%= f.password_field :password_confirmation, :placeholder => "Confirm Password"  %><br />

Я уверен, что проблема исходит из моей формы и маршрутов, может ли кто-нибудь помочь мне с решениемчтобы сделать эту работу?

С уважением

1 Ответ

1 голос
/ 13 января 2012

Проблема со следующим фрагментом представления:

<%= form_for @user, :remote => true, change_password_path(@user) do |f| %>

Попробуйте заменить его на:

<%= form_for @user, :remote => true, :url => change_password_path(@user) do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...