2
正如標題所述,我正在使用設計。我遇到了這個描述這樣做的過程的這個 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
爲了分離動作和圖,我的配置/ routes.rb中是這樣的: match '/password' => 'users#password', :as => 'password'
當我單擊窗體中的「更改密碼」按鈕時出現問題。 這是它給我帶來的鏈接:「http:// localhost:3000/assets?action = update_password & controller = users」,我得到錯誤「找不到id = assets的用戶」
I不知道爲什麼它以這種方式行事,以及我做錯了什麼,因爲我已經複製了網頁所說的內容。有沒有人有這方面的經驗,可以幫助我?謝謝!
謝謝對於幫助,但現在當我點擊提交按鈕時,我被':Missing template/password with'{:locale => [:en],:formats => [:html],:handlers => [:erb, :builder,:arb,:coffee]}。'。出於某種原因,它需要一個我不想要的視圖。它似乎不是在update_with_password之後重定向。 – Vasseurth
其實我能解決這個問題。現在的問題在於每一次,無論它是什麼輸入。我收到錯誤「密碼不能爲空,密碼確認不匹配」,即使它們匹配 – Vasseurth
這個「<%= password_field_tag:password%>'應該是'<%= f.password_field:password%>'否則它不會被限制在用戶的params中。如果你在做改變之前檢查html,我想你會明白我的意思。 – patrickmcgraw