Разработать страницу редактирования пароля - доступ к модели пользователя - PullRequest
1 голос
/ 23 мая 2011

Мне нужно настроить страницу пароля для редактирования Devise, включив в нее несколько деталей, которые включены в модель User.

Я быстро просмотрел онлайн, но не смог найти никакой документации, в которой упоминаются виды, имеющие доступ кмодель пользователя.

Есть ли способ получить к ней доступ?

Редактировать: У меня есть представления и др., речь идет именно о доступе к модели пользователя вРедактировать страницу пароля.Мне нужно персонализировать это.

Ответы [ 5 ]

1 голос
/ 28 мая 2011
= render :template => 'devise/passwords/edit', :locals => {:resource => current_user,:resource_name => User }

Попробуйте это на виду Для devise_errors укажите devise_helper.rb или напишите свой собственный обработчик ошибок

0 голосов
/ 25 июня 2012

Я хотел сделать то же самое. Я временно поместил resource.inspect в представление и увидел, что это был экземпляр User со всеми атрибутами nil, кроме reset_password_token. Учитывая это, я получил доступ к соответствующей записи пользователя, используя грубую силу:

User.find_by_reset_password_token(resource.reset_password_token)

Или, чтобы быть более общим:

resource.class.find_by_reset_password_token(resource.reset_password_token)

Вы можете использовать это непосредственно в поле зрения или назначить его переменной экземпляра в контроллере, если вы переопределяете контроллер Devise. Имейте в виду, что он вернет ноль, если токен недействителен. (Кажется, Devise не проверяет действительность токена до тех пор, пока пользователь не отправит форму, поэтому вы можете перейти к этому представлению с недействительным токеном.)

Обновление 03/2014

Начиная с версии 3.1, вам нужно переварить токен перед поиском:

resource.class.find_by_reset_password_token(Devise.token_generator.digest(resource.class, :reset_password_token, resource.reset_password_token))
0 голосов
/ 23 мая 2011

Запустите это, и он скопирует ваши представления в папку с именем «shared» для R <3 и «devise» для R3. </p>

rails g devise:views

Затем вы можете настроить вид. Вы должны быть в состоянии понять все в этих волдерах, это всего лишь Rails MVC.

Если у вас есть конкретная модель устройства, вы должны указать модель по имени:

rails g devise:views users
0 голосов
/ 23 мая 2011

rails generate devise:views users

Это создаст представления для пользовательской модели. Затем вы можете отредактировать нужные вам вручную.

0 голосов
/ 23 мая 2011

Ознакомьтесь с разработкой Wiki на github (https://github.com/plataformatec/devise/wiki), кроме того, вам нужно выполнить следующую команду в своем домашнем приложении. rails g devise:views или для конкретной модели rails g devise:views modelName

, которое создаст дерево представлений в app / views / devise.

В представлениях ссылаться на объект как resource

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
...

Вы можете безопасно удалить просмотры, которые вам не нужны, если вы хотите использовать haml или slim для представлений, это тоже хорошо, смотрите эту вики-страницу => https://github.com/plataformatec/devise/wiki/How-To:-Create-Haml-and-Slim-Views

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...