2014-01-07 21 views
2

我为未登录的用户制作了自定义布局。当我打开它,但它说First argument in form cannot contain nil or be empty。我已经做了一些Google搜索,看起来它与控制器中的代码没有正确配合有关。 (https://github.com/plataformatec/devise/issues/2451设计 - 表单中的第一个参数不能包含零或为空

我不使用自定义控制器的设计,并不想这样做,如果它不是必要的。

有没有办法绕过这个错误,而不使用自定义控制器?

是在新的(资源)的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 %> 

回答

1

它看起来像它说resource没有数据产生的错误?


设计

由于您使用resource,我想像你指的是设计的能力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

确保您的init在您的自定义控制资源作为self.resource

例如

self.resource = resource_class.new(sign_in_params) 
+1

您应突出自我的重要组成部分抛出。做得好! –

1

要解决此问题,并确保resource不是零在Rails 4.2的应用程序,我需要添加build_resource({})我注册#新动作。我从Devise :: Registrations控制器继承,但不依赖于super

https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb#L99

无错误正在之前升级到Rails从Rails的4.2 3.2

+0

谢谢。对我来说就是这样。顺便说一句,你可以使用build_resource,没有空的散列参数 –

相关问题