【问题标题】:Rails has_one belongs_to display field in index? [closed]Rails has_one belongs_to 在索引中显示字段? [关闭]
【发布时间】:2013-07-02 13:45:03
【问题描述】:

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

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

在我的季节表格中,我像这样为季节添加一个类别:

<%= 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”但没有工作。请问我的错在哪里?

谢谢:)

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

【问题讨论】:

  • 也许问题是你写的是saison而不是season
  • 不,现在是季节(抱歉有错误),我编辑它对不起
  • @John 当你尝试做&lt;%= season.category.name %&gt;时你的错误是什么@
  • 当我尝试 season.category.name 时,出现以下错误:SQLite3::SQLException: no such column: categories.season_id: SELECT "categories".* FROM "categories" WHERE "categories"。 "season_id" = 1 限制 1
  • 这表明您的categories 表中没有列categories.season_id。我相信您需要做的是将season_id 添加到您的categories 表中。另外,您确定您的关联设置正确吗? season 不能有很多 categories 吗?

标签: ruby-on-rails belongs-to has-one


【解决方案1】:

创建迁移

并在类别表中添加“session_id”列

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

rails generate migration add_column_Session_id_to_categories session_id:integer

这将创建迁移,现在运行此命令

 rake db:migrate

这就是你所做的一切

【讨论】:

  • 感谢您的回答,我按季节替换会话,但是当我尝试显示 season.category.name "undefined method `name' for nil:NilClass" 时出现新错误
  • 很好的答案,尽管我确实告诉@John 这就是他需要做的。你比我更需要积分!
  • @John 只需替换这一行
  • 我在赛季课程中将“has_one”替换为“belongs_to”并且它有效!
  • @John 我认为季节有一个类别而不是类别有一个季节。那你的目的是什么??
猜你喜欢
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多