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没有方法名)。为便于调试,请尝试转储相册变量-使用类似或的内容。这将显示您的具体情况。相册控制器中@和相册之间的空格是这里的输入错误还是您的代码中的输入错误?相册控制器中@和相册之间的空格是这里的输入错误还是您的代码中的输入错误?