Simple_form: simple_fields_for 未显示表格
Simple_form: simple_fields_for not showing the form
我正在尝试以一种形式创建两个模型。我有 user
和 unit
模型都与 has_many 关联:通过关联。
user.rb
class User < ActiveRecord::Base
has_many :units, :through => :user_unit_assocs
has_many :user_unit_assocs
end
unit.rb
class Unit < ActiveRecord::Base
has_many :users, :through => :user_unit_assocs
has_many :user_unit_assocs
end
users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new(user_params)
@user.units.build
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
else
format.html { render :new }
end
end
end
private
def user_params
params.require(:user).permit(:username, :email, units_attributes:[:unitname])
end
end
这是我的表单,用户 new
<%= simple_form_for(@user) do |f| %>
<%= f.simple_fields_for :units do |unit| %>
<%= unit.input :unitname, required: true %>
<% end %>
<%= f.input :name, required: true %>
<%= f.input :email, required: true %>
<%= f.button :submit %>
<% end %>
当我 运行 代码时,表单只显示 :name
和 :email
的输入字段,没有 units:[:unitname]
的输入字段。如何在表单中显示输入字段?提前致谢。
参考资料:
1. Rails 4: accepts_nested_attributes_for and mass assignment
2. https://github.com/plataformatec/simple_form/wiki/Nested-Models
您需要在新操作中建立关联,而不是在创建操作中。
添加
def new
@user = User.new
@user.units.build
end
在你的控制器上
我正在尝试以一种形式创建两个模型。我有 user
和 unit
模型都与 has_many 关联:通过关联。
user.rb
class User < ActiveRecord::Base
has_many :units, :through => :user_unit_assocs
has_many :user_unit_assocs
end
unit.rb
class Unit < ActiveRecord::Base
has_many :users, :through => :user_unit_assocs
has_many :user_unit_assocs
end
users_controller.rb
class UsersController < ApplicationController
def create
@user = User.new(user_params)
@user.units.build
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
else
format.html { render :new }
end
end
end
private
def user_params
params.require(:user).permit(:username, :email, units_attributes:[:unitname])
end
end
这是我的表单,用户 new
<%= simple_form_for(@user) do |f| %>
<%= f.simple_fields_for :units do |unit| %>
<%= unit.input :unitname, required: true %>
<% end %>
<%= f.input :name, required: true %>
<%= f.input :email, required: true %>
<%= f.button :submit %>
<% end %>
当我 运行 代码时,表单只显示 :name
和 :email
的输入字段,没有 units:[:unitname]
的输入字段。如何在表单中显示输入字段?提前致谢。
参考资料: 1. Rails 4: accepts_nested_attributes_for and mass assignment 2. https://github.com/plataformatec/simple_form/wiki/Nested-Models
您需要在新操作中建立关联,而不是在创建操作中。
添加
def new
@user = User.new
@user.units.build
end
在你的控制器上