2015-04-03 62 views
0

好吧,所以我有days,tracksevents。当我创建track时,会给出正确的day_id以及它自己的track_id。当我尝试创建event时,我希望给它适当的day_id和/或track_id试图让嵌套对象给父母

因此,当我拉起day它应该只显示tracksevents,与day相关联。在track中应存在event,它存在于day中。

所以,这基本上是一个日历,显示不同轨道的日常时间表以及轨道内的事件。

此外,我的events表中我的db有一个track_idday_id

这里是我的routes.rb

 resources :days do 
     resources :tracks do 
      resources :events 
     end 
     end 

我的新/创建从我events_controller.rb

 def new 
     @day = Day.find(params[:day_id]) 
     @track = Track.find(params[:track_id]) 
     @new_event = Event.new 
     end 

     def create 
     @day = Day.find(params[:day_id]) 
     @track = Track.find(params[:track_id]) 
     @events = @track.events 
     @new_event = Event.new(params.require(:event).permit(:name,:start_time, :end_time)) 


     if @new_event.save 
      flash[:notice] = "Saved" 
      redirect_to @day 
     else 
      flash[:error] = "Error" 
      render :new 
      end 
     end 

方法和这里就是我想在我的events.new.html.erb

<%= form_for [@day, @track, @new_event] do |f| %> 
    <%= f.label :name %> 
    <%= f.text_field :name, class: 'form-control', placeholder: "Enter the event" %> 

    <%= f.label :start_time %> 
    <%= f.text_field :start_time, class: 'form-control', placeholder: "Enter a start time"%> 

    <%= f.label :end_time %> 
    <%=f.text_field :end_time, class: 'form-control', placeholder: "Enter a start time"%> 
    <%= f.submit "Save", class: 'btn btn-success' %> 
    <% end %> 
创建一个新的 event

谢谢fo在帮助中,我很确定我附加了所需的一切!

回答

1

你应该从轨道创建事件:

@new_event = @track.events.new 

这将已经内部的相应track_id创建活动。

+0

真棒,谢谢。 – 2015-04-03 19:05:41

+0

实际上,我认为它已经工作了,尽管它使用适当的'track_id'创建了一个新事件,它并没有收到任何其他属性,例如'name' start_time'或'end_time' – 2015-04-03 19:33:45

0

然而,这并不工作...

@new_event = @track.events.new(params.require(:event).permit(:name, :start_time, :end_time))