我在Rails 5工作。我有两张与habtm有关系的表格:出版物和作者。他们通过一个连接表连接起来,作者和出版物。
我试图让视图列出与每个出版物相关联的作者的姓名,并返回以下信息:
the view
作者的数目是正确的,但我希望它能打印出真实的名字。当我在控制台中尝试此操作时,连接工作正常。以下是我的应用程序中的相关代码:
出版物.rb
class Publication < ApplicationRecord
self.table_name = "publications"
has_and_belongs_to_many :authors
scope :sorted, lambda { order("year_published DESC") }
scope :newest_first, lambda { order("created_at DESC") }
#scope :search, lambda {|query| where(["name LIKE ?", "%#{{query}}"])
#}
end
RB
class Author < ApplicationRecord
self.table_name = "authors"
has_and_belongs_to_many :publications
end
index.html.erb索引
<% @publications.each do |publication| %>
<h3><%= publication.name %></h3>
<p><%= publication.citation %></p>
<p><%= publication.authors.join(" ") %></p>
<% end %>
如何打印与每个出版物关联的作者姓名,而不是打印
<Author:xxxxxxxxxxxxxxxx>#
? 最佳答案
有点像
<p><%= publication.authors.pluck(:name).join(" ") %></p>
更改
name
列最清楚的方法是
<p><%= publication.authors.map(&:name).join(" ") %></p>
但第一个更有效:它只返回数据库中的名称,后者返回authors表的所有字段,然后对它们进行迭代以获得名称。
关于mysql - Join在Rails控制台中起作用,但在 View 中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45224674/