我在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/

10-15 14:14