2016-12-15 12 views
0

私は私のコードので、weekplanに多くの時間を追加しよう: #アプリ/モデル/ week_plan.rb クラスWeekPlan < ApplicationRecord にhas_many:時間 accepts_nested_attributes_for:時間 エンドネストされた属性の何が問題になっていますか?

# app/model/hour.rb 
class Hour < ApplicationRecord 
    belongs_to :weekplan 
end 

# app/controllres/weekplan_controller.rb 
class WeekplansController < ApplicationController 

    def new 
    @weekplan = WeekPlan.new 
    7.times { @weekplan.hours.build } 
    end 

    private 
    def set_weekplan 
     @weekplan = WeekPlan.find(params[:id]) 
    end 

    def weekplan_params 
     params.require(:weekplan).permit(hours_attributes: [ :date_start ]) 
    end 
end 

そしてfinnaly、アプリ/ビュー/ weekplans/new.html.rb

<h1>New Plan</h1> 

<%= form_for @weekplan do |f| %> 
    <%= f.fields_for :hours do |hour| %> 
    <p> 
     <%= f.label :user_id %><br> 
     <%= f.select :user_id, User.all.collect { |p| [ p.name, p.id ] }, include_blank: true %> 
    </p> 

    <p> 
     <%= f.label :date %><br> 
     <%= f.datetime_field :date %> 
    </p> 

    <p> 
     <%= f.label :date_start %><br> 
     <%= f.datetime_field :date_start %> 
    </p> 

    <p> 
     <%= f.label :date_end %><br> 
     <%= f.datetime_field :date_end %> 
    </p> 
    <% end %> 
    <%= f.submit %> 
<% end %> 

しかし、私は私のアプリを実行すると、私はエラーを取得:

(undefined method `user_id' for #<WeekPlan id: nil, created_at: nil, updated_at: nil>): 

私は理解できませんが、どこにバグが隠れていますか?

+0

はい、それはですが、**時間ので、私は、** ** week_plansでそれを必要としない** ** user_id **の列を持ちます。 – Valentin

答えて

4

あなたはfields_for :hourshour.labelhour.selectなどを使用する必要があります。

f.fields_for :hours do |hour| %>  # <======= hour was not used, use it 
    <p> 
     <%= hour.label :user_id %><br> # <======= hour, not `f` 
     <%= hour.select :user_id, User.all.collect { |p| [ p.name, p.id ] }, include_blank: true %> 
     # same with all other nested object's fields 

P.S. DBデータのRubyの処理が悪いです:それについて

User.all.collect { |p| [ p.name, p.id ] 

使用DB:

User.pluck(:name, :id) 
+0

私は余分な質問があります:http://stackoverflow.com/questions/41203572/nested-attributes-do-not-save-child 私の子モデルは保存されません( – Valentin

関連する問題