我为未登录的用户制作了自定义布局。当我打开它然后它说First argument in form cannot contain nil or be empty
。我已经完成了一些谷歌搜索,似乎与没有正确控制器中的代码有关。 (https://github.com/plataformatec/devise/issues/2451)
我没有为Devise使用自定义控制器,如果不是必要的话,不要这样做。
有没有办法在不使用自定义控制器的情况下绕过此错误?
错误是在新(资源)
的form_for
上创建的
<%= form_for(resource, :as => resource_name,
:url => session_path(resource_name) ,
:html => {:id => "sign_in_user"},
#:format => :json,
:remote => true, :url => session_path(resource_name)) do |f| %>
<% end %>
答案 0 :(得分:1)
看起来它说resource
没有数据?
<强>设计强>
由于您正在使用resource
,我认为您指的是Devise能够load forms on multiple pages:
#app/helpers/application_helper.rb
def resource_name
:user
end
def resource
@resource ||= User.new
end
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end
也许这会有所帮助?
答案 1 :(得分:1)
确保您在自定义控制器中初始化资源为 self.resource
e.g。
self.resource = resource_class.new(sign_in_params)
答案 2 :(得分:1)
要解决此问题并确保{RES 4.2应用中的resource
不是nil,我需要将build_resource({})
添加到我的注册#new动作中。我继承自Devise :: Registrations控制器,但不依赖于super
。
在从Rails 3.2升级到Rails 4.2之前没有抛出任何错误