渲染设计编辑密码表单

时间:2011-05-06 18:54:48

标签: ruby-on-rails-3 devise

我正在尝试在另一个视图中呈现Devise编辑密码表单,因为我不想复制编辑pw逻辑。

我尝试了以下(在生成Devise视图之后):

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

渲染上的其他一些变体似乎都给了我同样的错误:

foo #foo中的ActionView :: MissingTemplate 缺少部分设计/密码/编辑......“

此变体:

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

给了我一些希望,但是出现了以下错误:

“#&lt;#:0x47ef0e0&gt;”的未定义局部变量或方法“资源”

围绕这一行:

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

这让我觉得我很接近(因为那是我想要的表单中的代码)但是该模板不应该使用隐藏的Devise控制器中的正确逻辑吗?或者我是否需要在路线文件中执行某些操作才能使其生效?

我离开了吗?

1 个答案:

答案 0 :(得分:7)

试试这个:

<%= 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"