【发布时间】:2016-04-13 14:00:52
【问题描述】:
我也遇到了嵌套表单和 Rails 4 的问题(不幸的是,这似乎很常见)。我有有要求的活动,模型是:
class Event < ActiveRecord::Base
enum type: [:lecture, :exercise, :tutorial]
has_one :requirement, dependent: :destroy
#accepts_nested_attributes_for :requirement
end
和
class Requirement < ActiveRecord::Base
belongs_to :event
end
这两者之间本质上是一一对应的。 现在我想与相关的一起创建一个新事件 要求。我正在使用以下表格:
<div class="container">
<%= form_for(@event) do |f| %>
<% if @event.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@event.errors.count, "error") %> prohibited this event from being saved:</h2>
<ul>
<% @event.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="container">
<%= f.select :type, Event.types.map { |key, value| [key.humanize, key] }%>
<%= f.text_field :number, placeholder: "1298035" %>
<% f.fields_for :requirement, @event.requirement do |fields| %>
<%= fields.check_box :beamer %><br />
<% end %>
<%= f.submit %>
</div>
<% end %>
</div>
如您所见,我希望有一个复选框,指示是否需要投影仪。问题是 fields_for 块从未被评估过。类似于这些帖子:
Rails 3: fields_for showing blank filed on Edit view
Helper "fields_for" not working
据我所知,对象已正确创建:
# GET /events/new
def new
@event = Event.new
@event.build_requirement
end
如果我使用puts,我会看到两个对象都不为零并且关联是正确的。
我对 Rails 有点陌生,我必须说我受阻。有什么想法吗?
【问题讨论】:
-
你能解释一下
fields_for块永远不会被评估吗? -
好吧,复选框没有渲染。如果我添加其他普通标签,它们也不会呈现。如果我引用不存在的标签,则不会产生错误。
标签: ruby-on-rails ruby