【问题标题】:Nested forms in rails 4 and the fields_for methodrails 4 中的嵌套表单和 fields_for 方法
【发布时间】: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


【解决方案1】:

您应该在Event 模型中取消注释 accepts_nested_attributes_for :requirement

更新:

您还应该在fields_for 中包含=

<%= f.fields_for :requirement, @event.requirement do |fields| %>

【讨论】:

  • 谢谢 :) 非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多