我正在尝试在另一个视图中呈现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控制器中的正确逻辑吗?或者我是否需要在路线文件中执行某些操作才能使其生效?
我离开了吗?
答案 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"