Я не уверен, почему вы видите name
локально, но то, что вы видите на Heroku, является результатом неявного вызова to_s
для ассоциации trip.categories
, которая является массивом записей категорий.
# You could define the `to_s` of Category to return the name.
class Category
def to_s
name
end
end
# or define a method to return a mapping of the category names:
class Trip
# via an association extension
has_and_belongs_to_many :categories do
def names
map(&:name)
end
end
# or a simple instance method
def category_names
categories.map(&:name)
end
end
Trip.first.categories.names #=> [cat1, cat2]
Trip.first.category_names #=> [cat1, cat2]
Но ваш текущий шаблон по-прежнему будет выводить Array
строк в вывод, например:
["category1", "category2", "category3"]
То, что вы, вероятно, хотите, больше похоже на:
<%= trip.categories.map(&:name).to_sentence %>
Что может привести к: "category1, category2 и category3" или некоторым другим.