2014-01-07 87 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,沒有空的散列參數 –

相關問題