2014-09-02 41 views
3

我已經用Devise和Pundit創建了Rails App composer的新應用程序。作曲家創建了一個表單來創建新用戶(devise/registrations/new.html.erb),我想將其作爲一個部分,所以我可以將它放在其他頁面上。形式是使用railapps創建的設計新用戶表單部分重新使用它

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :role => 'form'}) do |f| %> 
    <h3>Sign up</h3> 
    <%= devise_error_messages! %> 
    <div class="form-group"> 
     <%= f.label :email %> 
     <%= f.email_field :email, :autofocus => true, required: true, class: 'form-control' %> 
    </div> 
    <div class="form-group"> 
     <%= f.label :password %> 
     <%= f.password_field :password, class: 'form-control' %> 
    </div> 
    <div class="form-group"> 
     <%= f.label :password_confirmation %> 
     <%= f.password_field :password_confirmation, class: 'form-control' %> 
    </div>ate_field :date_of_birth, class: 'form-control' %> 
    </div> 
    <%= f.submit 'Sign up', :class => 'button right' %> 
    <% end %> 

,如果我把這個變成一個局部的,儘量使其另一頁上,我得到

undefined local variable or method `resource 

而這顯然是因爲在我的控制,我沒有任何定義。問題是我無法找到控制器或其他控制器應該在什麼位置,以便我可以重新使用它。

回答

1

您正在尋找位於here

資源的資源的方法似乎與你使用的是與設計的實際資源名稱的實例變量來定義。

所以,如果你使用設計爲users資源,你應該定義資源爲User.new要渲染部分的控制器上,並標記爲helper_method,因此它可能在視圖中使用,或只是在定義它直幫手。

或者,您可以繼承DeviseController,其中已包含資源定義和其他有用的方法。