尝试在rails上的ruby中使用替代更新方法时出错

时间:2012-01-13 11:42:57

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems

我很难尝试追踪错误。我在登录时使用单独的更新方法来更改用户密码。我已经发布了以下代码。

在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 个答案:

答案 0 :(得分:1)

问题在于以下视图片段:

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

尝试将其替换为:

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