Я понял, что я не думал об очевидном. Ограничьте пользователей с помощью маршрутов, а не изобретайте-привлекательно.
Используется Solution #2 в качестве ссылки (смотри ниже)
Позволяет предположить, что вы не хотите, чтобы подписать вверх, но вы хотите, чтобы изменить пароль для зарегистрированных пользователей. Просто вставьте этот код в routes.rb:
devise_for :users, :skip => [:registrations]
as :user do
get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
put 'users/:id' => 'devise/registrations#update', :as => 'user_registration'
end
И тогда вы можете сделать такую ссылку на ваш взгляд:
= link_to "Change your password", edit_user_registration_path
Примечание: вам нужно будет обновлять по умолчанию разработать взгляды соответственно, то есть в app/views/devise/registrations/edit.html.erb
изменения registration_path(resource_name)
к user_registration_path(resource)
(Если использованию общих видов для нескольких моделей, вы можете использовать send("#{resource_name}_registration_path", resource))
Примечания:. Если вы используете рельсы 4.0+ вы должны использовать патч вместо положенных обновлений вы должны изменить метод в т он form_tag, проживающий в app/views/devise/registrations/edit.html.erb
и файл routes.rb
.
Спасибо! Я мог бы рассмотреть на месте или с моими маршрутами исправить. – AGirlThatCodes
Еще раз спасибо, я закончил тем, что предложил предложенный вариант, который был разработан. – AGirlThatCodes