Опитвам се да внедря решение за забравена парола в rails. Имам формуляр за потребителя да въведе имейл адреса за регистрирания си акаунт и възнамерявам да му изпратя имейл с уникален URL адрес, който ще го свърже към страница за повторно задаване на парола.
Моят файл config/routes.rb има следните маршрути:
resources :users do
collection do
get :lost_password #the account-email submisison form url
get :reset_password #a url for the function that sends the response email
end
end
Когато стартирам рейк маршрути от конзолата, получавам пътищата, които искам:
lost_password_users GET /users/lost_password(.:format) {:action=>"lost_password", :controller=>"users"}
reset_password_users GET /users/reset_password(.:format) {:action=>"reset_password", :controller=>"users"}
users GET /users(.:format) {:action=>"index", :controller=>"users"}
POST /users(.:format) {:action=>"create", :controller=>"users"}
НО! Когато потребителят натисне бутона за изпращане във формуляра, описан в кода по-долу:
<h3>Reset Password</h3>
<%= form_for(:user, :url => reset_password_users_path) do |f| %>
<p>Enter the email address you used to register for this site.</p></br>
<div class="field">
<%= f.label :email %> </br>
<%= f.text_field :email %>
</div>
<div class="actions">
<%= f.submit "Send Email" %>
</div>
<% end %>
получавам a
Няма маршрут, който да съответства на „/users/reset_password“
грешка чрез ActionController.
Всъщност имам изгледи и функции на контролера, дефинирани както за lost_password_users_path, така и за reset_password_users_path, така че съм озадачен защо бих се натъкнал на тази грешка при маршрутизиране.
Имам два въпроса:
- Защо ActionController ще повдигне тази грешка, когато ясно имам дефинирани пътя, методите и изгледите?
- Някой друг прилагал ли е повторно задаване на парола в RoR и можете ли да дадете някаква представа дали този подход е добра практика или не?
Благодаря предварително!