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_name
、resource
和 devise_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
嗯,我对 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_name
、resource
和 devise_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