在使用 Phusion Passanger + Nginx 托管我的应用程序的生产环境中,我遇到了 fields_for 无法正确渲染大量字段的问题。
例子:
members_controller.rb:
class MembersController << ApplicationController
def new
@member = Member.new
# There are 200 or so groups in the database.
current_client.groups.active.each do |group|
@member.affiliation.build(:group => group)
end
end
end
新的.html.haml:
= form_for @member do |f|
= f.text_field :name
= f.text_field :phone
= f.fields_for :affiliations do |affiliation_form|
.group_field
= affiliation_form.hidden_field :group_id
= affiliation_form.label :_destroy, affiliation_form.object.group.name
= affiliation_form.check_box :_destroy, { }, "0", "1"
到目前为止一切顺利,在开发中,这将按照我的需要正确返回所有字段。在生产服务器上部署应用程序时(相同的 ruby 1.9.2p180)。HTML 是不完整的,在 200 个字段中大约有 30-50 个左右呈现,最后一个 *.group_field* 不存在或存在一些元素(每次都有不同的结果)。
倒数第二组字段:
<div class="group_field">
<input id="..." name="..." type="hidden" value="48">
<label for="...">...</label>
<input name="..." type="hidden" value="1">
<input id="..." name="..." type="checkbox" value="1">
</div>
最后一组字段:
<div class="group_field">
<input id="..." name="..." type="hidden" value="49">
<label for="...">...</label>
</div>
日志不会产生任何错误,所以我无法找出错误/问题所在的位置。我也在生产环境中尝试过相同的形式,只提供 20 个左右的组,效果很好。谁能帮我找出这个非常奇怪的错误?