处理has_many关联中的ID

时间:2015-03-12 12:07:50

标签: ruby-on-rails

我正在制作一个控制电视节目的节目,所以我的关系是:Show有很多SeasonsSeason有很多Episodes

我不知道如何将show.id传递给季节表,而我的一位朋友帮助了我,但我不理解他的方法。当我尝试使用相同的方法为剧集传递season_id但我不能。所以这是代码:

季节控制器

def create
  @season = Season.new(season_params)
  if session[:id] != nil
  @season.show_id = (session[:id])
  session[:id] = nil
end

显示节目视图(我选择了错误的名称)。 在这个视图中,我希望看到与该节目相关的所有季节和剧集。

<p id="notice"><%= notice %></p>
<% @seasons = Season.all %>

<% @seasons.where(:show_id => @show.id).each do |season| %>
<tr>
  <td><%= season.order %></td>
  <td><%= season.status %></td>
</tr>
<% end %>
<%= link_to 'create seasons', season_new_path(@show.id) %>
<%= link_to 'Edit', edit_show_path(@show) %> |
<%= link_to 'Back', shows_path %>

的routes.rb

Rails.application.routes.draw do
resources :episodes
resources :seasons
resources :shows
get 'seasons/create/:id' => 'seasons#new', as: :season_new

是否有更好的方法可以为show.idseason传递season.id的ID作为剧集?

我忘了推送我为剧集编写的代码及其在另一台电脑中的代码。

如果您想查看更多代码,请查看我的github:Github code

1 个答案:

答案 0 :(得分:0)

accepts_nested_attributes_for :seasons模型中添加Show

new.html.erb,应该看起来像这样

<% form_for @show do |f| %>
    <%= f.error_messages %>
    <% f.fields_for :seasons do |s| %>
        <p>
            <%= s.label :order, "Order" %><br />
            <%= s.text_field :order %>
        </p>
        <p>
            <%= s.label :status, "Status" %><br />
            <%= s.text_field :status %>
        </p>
    <% end %>
    <p><%= f.submit "Submit" %></p>
<% end %>   

show.html.erb

<p id="notice"><%= notice %></p>

<% for season in @show.seasons %>
     <td><%= season.order %></td>
     <td><%= season.status %></td>
<% end %>

<%= link_to 'create seasons', season_new_path(@show) %>
<%= link_to 'Edit', edit_show_path(@show) %> |
<%= link_to 'Back', shows_path %>