2016-04-13 19 views
0

ネストされたフォームと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でないことを確認関連が正しいことを確認します。

私はレールの新しいものです。私は迷惑だと言わなければなりません。何か案は?

+0

'fields_for'ブロックは評価されないと説明できますか? – Pavan

+0

さて、チェックボックスは表示されません。他のプレーンタグを追加すると、レンダリングされません。存在しないラベルを参照するとエラーは発生しません。 – hfhc2

答えて

2

あなたべきEventモデルでコメントを解除accepts_nested_attributes_for :requirement

更新:

またfields_for=を含める必要があります。

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

さて、私はそれを試みました。残念ながら... – hfhc2

+0

@ hfhc2更新をチェックしてください。 – Pavan

+1

Thx :)私は非常に助けていただきありがとうございます。 – hfhc2

関連する問題