Рендеринг формы редактирования пароля - PullRequest
5 голосов
/ 06 мая 2011

Я пытаюсь отобразить форму пароля для редактирования Devise в другом представлении, потому что не хочу дублировать логику редактирования pw.

Я пробовал следующее (после генерации представлений Devise):

<%= render 'devise/passwords/edit' %>
<%= render 'devise/passwords/form' %>

И ряд других вариантов рендеринга, которые, похоже, дают мне одну и ту же ошибку:

"ActionView :: MissingTemplate в foo # foo Отсутствует частичная разработка / пароли / редактирование... "

Эта вариация:

  <%= render :file => 'devise/passwords/edit.html.erb' %>

Дала мне надежду, но следующая ошибка:

" неопределенная локальная переменная или метод `resource 'для # <#:0x47ef0e0> "

вокруг этой строки:

<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %>

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

Я ухожу?

1 Ответ

7 голосов
/ 06 мая 2011

Попробуйте это:

<%= render :template => 'devise/passwords/edit', 
                        :locals => { 
                          :resource => my_user_model_variable, 
                          :resource_name => my_user_model_name } %>

Где:

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