在我的views / devise / sessions / new.erb.html文件中,我有以下一行
> <%= form_for(resource, :as => resource_name, :url =>
> session_path(resource_name), :html => { :class => "form-horizontal
> well"}) do |f| %>
这很好用,但如果我尝试将此表单放在我的主页上,我会收到错误...
undefined local variable or method `resource' for #<#<Class:0x2950e78>:0x563118>
我需要做些什么才能让这个工作?或者是Devise有关于此的文档吗?
答案 0 :(得分:1)
Devise对其进行身份验证的对象采取了一些不可知的方法,resource
只是您使用路由文件中的devise_for
定义的映射的代理。也就是说,如果您已经知道资源的名称,您可以手动指定它,la:
<%= form_for("user", :url => user_session_path, :html => { :class => "form-horizontal well"}) do |f|%>
或者,您可以在控制器内部定义相应的resource
和resource_name
方法,如您链接的文档中所示。
答案 1 :(得分:0)
您还可以将Devise帮助器方法添加到controller_helper.rb中。对于家庭控制器,我相信它是application_helper.rb。
一个例子是here