使用railapps创建的Devise新用户表单可以重新使用它

时间:2014-09-02 21:07:02

标签: ruby-on-rails ruby devise railsapps

我已经使用Rails App composer与Devise和Pundit创建了一个新应用。作曲家已经创建了一个表单来创建新用户(设计/注册/ new.html.erb),我想让它成为一个部分,所以我可以把它放在其他页面上。表格是

  <%= 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

这显然是因为在我的控制器中我没有定义任何东西。问题是我无法找到控制器或resource应该在另一个控制器中,以便我可以重复使用它。

1 个答案:

答案 0 :(得分:1)

您要查找的资源方法位于here

资源似乎是由一个实例变量定义的,其中包含您正在使用的实际资源的名称。

因此,如果您对users资源使用设计,则应在要呈现该部分的控制器上将资源定义为User.new,并将其标记为helper_method,以便它可能是DeviseController在视图中使用,或者直接在帮助器中定义它。

或者,你可以继承已经包含资源定义和其他有用方法的{{1}}。