【发布时间】:2016-01-22 06:27:19
【问题描述】:
我正在尝试使用fields_for 并创建一个嵌套表单,但是只显示一个文本字段,空白。我有 3 个 crewmember 记录。
crewmember模特:
class Crewmember < ActiveRecord::Base
belongs_to :production
belongs_to :callsheet
validates :firstname, presence: true
validates :email, presence: true
def name
"#{firstname} #{lastname}"
end
end
callsheet型号
class Callsheet < ActiveRecord::Base
attr_accessible :crewmembers_params
has_many :castmembers
has_many :crewmembers
accepts_nested_attributes_for :crewmembers
end
callsheets控制器
class CallsheetsController < ApplicationController
def index
@callsheets = Callsheet.all
@departments = Department.where(production_id: current_user.default_working_production_id)
end
def show
@callsheet = Callsheet.find(params[:id])
end
def new
@callsheet = Callsheet.new
@departments = Department.where(production_id: current_user.default_working_production_id)
end
def edit
@callsheet = Callsheet.find(params[:id])
end
def create
@callsheet = Callsheet.new(callsheets_params)
@Callsheet.production_id = current_user.default_working_production_id
if @callsheets.save
redirect_to callsheet_path
else
render 'new'
end
end
def update
@callsheet = Callsheet.find(params[:id])
if @callsheet.update(callsheets_params)
redirect_to callsheet_path, :notice => "callsheets successfully updated."
else
render 'edit', :notice => "callsheets not updated."
end
end
def destroy
@callsheet = Callsheet.find(params[:id])
@callsheet.destroy
redirect_to callsheets_path
end
private
def callsheets_params
params.require(:callsheet).permit(:crewmembers_params [:id, :firstname])
end
end
新调用表的表单:
<%= form_for @callsheet do |f| %>
<% if @callsheet.errors.any? %>
<div id="error_explanation" class="alert alert-danger">
<strong>
<%= pluralize(@callsheet.errors.count, "error") %> prohibited
this call sheet from being saved:
</strong>
<ul>
<% @callsheet.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.fields_for :crewmember do |crewmember| %>
<fieldset>
<%= crewmember.label :firstname, "First Name" %><br />
<%= crewmember.text_field :firstname %>
</fieldset>
<% end %>
<% end %>
【问题讨论】:
-
哪个字段是空白的?你能插入屏幕截图/图像吗?
-
调用表/新页面上的
<%= crewmember.text_field :firstname %>字段为空白,仅列出一个。最终我想插入每个机组成员的姓名,并允许用户从表单中删除机组成员。 -
您是否尝试过从 到 ,请注意这里的复数形式。
-
当我这样做时,什么都没有出现
-
是否有 3 个“@callsheet”记录?我的意思是“@callsheet”记录的总数......
标签: ruby-on-rails forms field