【发布时间】:2012-06-22 04:16:36
【问题描述】:
正如标题所述,我正在使用设计。我遇到了这个 link 描述了执行此操作的过程。 我有这个用户控制器:
def update_password
@user = User.find(current_user.id)
#raise @user.to_yaml
if @user.update_attributes(params[:user])
# Sign in the user by passing validation in case his password changed
sign_in @user, :bypass => true
#flash[:notice] = "Password Successfully Changed"
redirect_to settings_path
else
flash[:notice] = @user.errors.full_messages
render password_path
end
end
忽略#raise @user.to_yaml。
而这个观点:
<h1>Change Password</h1>
<%= form_for(:user, :url => { :action => 'update_password'}) do |f| %>
<div>
<%= f.label :current_password %>
<%= f.password_field :current_password %>
</div>
<div>
<%= f.label :password %>
<%= password_field_tag :password %>
</div>
<div>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</div>
<div>
<%= f.submit "Change Password" %>
</div>
<% end %>
我已将该视图映射到此控制器方法:
def password
@user = current_user
end
为了分离动作和视图,我的 config/routes.rb 是这样的:
match '/password' => 'users#password', :as => 'password'
当我单击表单中的“更改密码”按钮时出现问题。 这是它带给我的链接:“http://localhost:3000/assets?action=update_password&controller=users”,我收到错误“找不到具有 id=assets 的用户”
我不知道它为什么以这种方式行事以及我做错了什么,因为我复制了网页上的内容。有没有人有这方面的经验并且可以帮助我?谢谢!
【问题讨论】: