ネストされたフォームとRails 4にも問題があります(これは残念ながらよくあるようです)。私は要件を持つイベントがあり、モデルは以下のとおりです。ネストされたフォーム4とfields_forのメソッド
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
は、本質的にこれら二つの間に1対1の対応があります。 これで、関連付けられた 要件と一緒に新しいイベントを作成したいと思います。私は次の形式を使用しています:
<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
を使用している場合は、私は両方のオブジェクトがnilでないことを確認関連が正しいことを確認します。
私はレールの新しいものです。私は迷惑だと言わなければなりません。何か案は?
'fields_for'ブロックは評価されないと説明できますか? – Pavan
さて、チェックボックスは表示されません。他のプレーンタグを追加すると、レンダリングされません。存在しないラベルを参照するとエラーは発生しません。 – hfhc2