Ruby 在 Rails Form_for 其他文件中的资源

Ruby on Rails Form_for resource in other file

嗯,我对 form_for、gem 设计有疑问。 在我把它放在 users/session/new.html.erb

之前

<h2>Log in</h2>

<%= form_for(resource, as: resource_name, url: session_path(resource_name), html: {class: 'form-horizontal'}) do |f| %>
<div class="form-group">
    <%= f.label :email, class: "col-sm-2 control-label" %>
    <div class="col-sm-6">
        <%= f.email_field :email, autofocus: true , class: "form-control" %>
    </div>
</div>

但现在我尝试在其他文件中的 bootstrap 模态中使用此代码,正好在 app/views/layouts/_header.html.erb 中,因为我有一个 "Log in" 按钮。

当我放在那里时 ->

的未定义局部变量或方法“资源”

解决方案?或者我需要把这段代码放在哪里?

诀窍是在 ApplicationHelper 中定义 resource_nameresourcedevise_mapping 辅助方法。假设您的设计模型称为 user,请将以下方法放入您的应用程序助手中:

# application_helper.rb

module ApplicationHelper
  def resource_name
    :user
  end

  def resource
    @resource ||= User.new
  end

  def devise_mapping
    @devise_mapping ||= Devise.mappings[:user]
  end
end