从 application.html.erb 的局部视图渲染 simple_form
Render simple_form from partial view on application.html.erb
我想为我的注册表创建一个局部视图并将其添加到应用程序布局文件中,因为它将显示在导航栏的下拉菜单中。
如何使用 simple_form gem
在局部视图中创建此表单并将其呈现在 application.html.erb
上?
<%= simple_form_for(@user, url: account_register_path) do |f| %>
考虑到上面的代码是创建表单的方式,我不知道我应该在哪里定义 @user
以在应用程序布局中使用,也不知道我是否真的需要它。
有人可以澄清一下吗?
你必须在相应的控制器动作中定义@user(我会从你的代码中假设,那个控制器被称为账户,动作是注册),它会是这样的:
@user = User.new
为了初始化实例created/updated。然后,所有字段中使用的属性应匹配用户数据库 table.
不要把它放在局部,只需要 registration
视图,用 render
...
调用
#app/views/layouts/application.html.erb
<%= render "accounts/new" %>
#app/views/accounts/new.html.erb
<%= simple_form_for :user, url: account_register_path do |f| %>
...
而you can use a symbol to populate form_for
,它不会包括模型的属性,或提供上下文的各种隐藏方法(例如id
等)。
如果您想用变量填充 accounts#new
view/action,您必须在 ApplicationController
:
中设置它
#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :set_user
private
def set_user
@user = User.new
end
end
这将允许您使用:
#app/views/accounts/new.html.erb
<%= simple_form_for @user, url: account_register_path do |f| %>
--
实现这一点的最佳方法是使用 Ajax——这样,@user
对象仅在您需要时创建(解决膨胀问题)。
我们 done this before:
您只需要以下内容:
#app/views/layouts/application.html.erb
<%= link_to "New User", account_register_path, remote: true %>
#app/controllers/accounts_controller.rb
class AccountsController < ApplicationController
respond_to :js, :html
def new
@user = User.new
respond_with @user
end
end
#app/views/accounts/new.js.erb
$("<%=j render 'accounts/new' %>").appendTo("body");
我想为我的注册表创建一个局部视图并将其添加到应用程序布局文件中,因为它将显示在导航栏的下拉菜单中。
如何使用 simple_form gem
在局部视图中创建此表单并将其呈现在 application.html.erb
上?
<%= simple_form_for(@user, url: account_register_path) do |f| %>
考虑到上面的代码是创建表单的方式,我不知道我应该在哪里定义 @user
以在应用程序布局中使用,也不知道我是否真的需要它。
有人可以澄清一下吗?
你必须在相应的控制器动作中定义@user(我会从你的代码中假设,那个控制器被称为账户,动作是注册),它会是这样的:
@user = User.new
为了初始化实例created/updated。然后,所有字段中使用的属性应匹配用户数据库 table.
不要把它放在局部,只需要 registration
视图,用 render
...
#app/views/layouts/application.html.erb
<%= render "accounts/new" %>
#app/views/accounts/new.html.erb
<%= simple_form_for :user, url: account_register_path do |f| %>
...
而you can use a symbol to populate form_for
,它不会包括模型的属性,或提供上下文的各种隐藏方法(例如id
等)。
如果您想用变量填充 accounts#new
view/action,您必须在 ApplicationController
:
#app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :set_user
private
def set_user
@user = User.new
end
end
这将允许您使用:
#app/views/accounts/new.html.erb
<%= simple_form_for @user, url: account_register_path do |f| %>
--
实现这一点的最佳方法是使用 Ajax——这样,@user
对象仅在您需要时创建(解决膨胀问题)。
我们 done this before:
您只需要以下内容:
#app/views/layouts/application.html.erb
<%= link_to "New User", account_register_path, remote: true %>
#app/controllers/accounts_controller.rb
class AccountsController < ApplicationController
respond_to :js, :html
def new
@user = User.new
respond_with @user
end
end
#app/views/accounts/new.js.erb
$("<%=j render 'accounts/new' %>").appendTo("body");