Ruby on rails 从Rails中的关系数据库绘制信息

Ruby on rails 从Rails中的关系数据库绘制信息,ruby-on-rails,sqlite,sqlite3-ruby,Ruby On Rails,Sqlite,Sqlite3 Ruby,我正试图从专辑数据库中提取艺术家的名字。 这是我的两个模型 class Album < ActiveRecord::Base belongs_to :artist validates_presence_of :title validates_length_of :title, :minimum => 5 end class Artist < ActiveRecord::Base has_many :albums end 以及索引中的视图: <

我正试图从专辑数据库中提取艺术家的名字。 这是我的两个模型

class Album < ActiveRecord::Base

  belongs_to :artist

  validates_presence_of :title
  validates_length_of :title, :minimum => 5
 end

class Artist < ActiveRecord::Base

  has_many :albums

end
以及索引中的视图:

<% @albums.each do |album| %>
  <tr>
    <td><%=h album.id %></td>
    <td><%=h album.title %></td>
    <td><%=h album.artist.name %></td>
  </tr
<% end %>

我做错了什么?

您需要做如下操作:

<%=h album.artist.name %>


可以说,使用它的方式就是显示整个对象。

您需要执行以下操作:

<%=h album.artist.name %>


可以说,按照您使用它的方式,您正在显示整个对象。

在保存您的艺术家->相册关系时发生了一些事情。如果您收到该错误,则返回一个nil艺术家,这意味着密钥未保存在表中。手动检查您的表并确保该关系存在。如果不存在,则您查找的位置不正确,您应该修复您的保存

在保存您的艺术家->专辑关系时发生了一些事情。如果您收到该错误,则返回一个nil艺术家,这意味着密钥未保存在表中。手动检查您的表并确保该关系存在。如果不存在,则您查找的位置不正确,您应该修复您的保存

听起来您的专辑没有艺术家(艺术家id为空或设置为不再存在的艺术家id)

您可以尝试:

<%= h album.artist ? album.artist.name : 'N/A' %>

听起来您的专辑没有艺术家(艺术家id为空或设置为不再存在的艺术家id)

您可以尝试:

<%= h album.artist ? album.artist.name : 'N/A' %>

您是否在数据库表中正确设置了数据?如果正确保存了艺术家和相册模型,则其外观应如下所示:

artists table

id|name
---------------------
 1|The Beatles
 2|The Rolling Stones

albums table

id|artist_id|title
--------------------------------------------------
 1|1        |The White Album
 2|2        |Exile on Main Street
 3|1        |Sgt. Pepper's Lonely Hearts Club Band

您是否在数据库表中正确设置了数据?如果正确保存了艺术家和相册模型,则其外观应如下所示:

artists table

id|name
---------------------
 1|The Beatles
 2|The Rolling Stones

albums table

id|artist_id|title
--------------------------------------------------
 1|1        |The White Album
 2|2        |Exile on Main Street
 3|1        |Sgt. Pepper's Lonely Hearts Club Band

写前面列举的内容的另一种方法

<%= h album.artist.name unless album.artist.blank? %>

这样会更有效率

写前面列举的内容的另一种方法

<%= h album.artist.name unless album.artist.blank? %>

这样会更有效率

是的,我试过了,我得到了这个,“nil:NilClass的未定义方法‘name’”如果对于album.artist.name它说,这意味着没有定义艺术家(即,artist为nil,nil没有方法名称)。为便于调试,请尝试转储相册变量-使用类似或的内容。这会告诉你你到底有什么。是的,我试过了,我得到了这个,“nil:NilClass的未定义方法`name'”如果对于album.artist.name它说,这意味着你没有定义艺术家(即,艺术家为nil,而nil没有方法名)。为便于调试,请尝试转储相册变量-使用类似或的内容。这将显示您的具体情况。相册控制器中@和相册之间的空格是这里的输入错误还是您的代码中的输入错误?相册控制器中@和相册之间的空格是这里的输入错误还是您的代码中的输入错误?