Ruby on rails Rails是否有一个属于索引中的显示字段?

Ruby on rails Rails是否有一个属于索引中的显示字段?,ruby-on-rails,belongs-to,has-one,Ruby On Rails,Belongs To,Has One,我有两种型号:季节型和类别型。我想在季节索引视图中显示类别名称 class Season < ActiveRecord::Base attr_accessible :nb_down, :nb_up, :name, :category_id has_one :category accepts_nested_attributes_for :category end class Category < ActiveRecord::Base attr_accessible :

我有两种型号:季节型和类别型。我想在季节索引视图中显示类别名称

class Season < ActiveRecord::Base
  attr_accessible :nb_down, :nb_up, :name, :category_id
  has_one :category
  accepts_nested_attributes_for :category
end

class Category < ActiveRecord::Base
  attr_accessible :color, :name
  belongs_to :season
end
classseasure
在我的季节表中,我向季节添加了一个类别,如下所示:

<%= f.collection_select :category_id, Category.all,:id,:name %>

在我的季节索引视图中,我想显示所有季节列和类别名称。我正在显示id cat,正在执行以下操作:

<% @seasons.each do |season| %>
  <tr>
    <td><%= link_to season.id, season_path(season) %></td>
    <td><%= season.name %></td>
    <td><%= season.nb_up %></td>
    <td><%= season.nb_down %></td>
    <td><%= season.category_id %></td>
    (...)

(...)
我想显示类别名称,而不是id。我尝试执行“season.category.name”,但不起作用。请问我的错在哪里

谢谢:)

[编辑]:我创建了一个迁移,以在类别中添加季节id,并在季节类中将我的“has_one”替换为“belishing_to”,它可以工作:我可以在季节索引视图中显示类别名称。

创建迁移

class Season < ActiveRecord::Base
  attr_accessible :nb_down, :nb_up, :name, :category_id
  has_one :category
  accepts_nested_attributes_for :category
end

class Category < ActiveRecord::Base
  attr_accessible :color, :name
  belongs_to :season
end
并在catogeries表中添加“会话id”列

在终端的项目根目录中运行此命令

rails generate migration add_column_Session_id_to_categories session_id:integer
这将创建迁移,现在运行此命令

 rake db:migrate

这就是你所做的

也许问题是你写的是
saison
而不是
seasure
?不,现在是seasure(抱歉出错),我编辑了它sorry@John当我尝试season.category.name时,当您尝试执行
时,您的错误是什么,有以下错误:SQLite3::SQLException:没有这样的列:categories.season\u id:从“categories”中的“categories”中选择“categories”。“season\u id”=1 LIMIT 1这表示在
categories
表中没有列
categories.season\u id
。我相信您需要做的是将
seasure\u id
添加到您的
categories
表中。另外,您确定关联设置正确吗?一个
seasure
可以没有很多
类别吗?Thanx对于你的答案,我会按季节替换session,但是当我试图显示seasure.category.name“nil:NilClass的未定义方法'name'时出现了一个新的错误”回答得很好,尽管我对@John说这是他需要做的。你比我更需要分数@约翰把这句话换成了我在季课上用“属于”替换的“has_one”,这句话很管用@约翰,我认为赛季只有一个类别,而不是一个类别只有一个赛季。那么你的目的是什么??