我有3个型号( RailwayStation ,路线和联合表RailwayStationsRoute
)
class RailwayStationsRoute < ApplicationRecord
belongs_to :railway_station
belongs_to :route
class Route < ApplicationRecord
has_many :railway_stations_routes
has_many :railway_stations, through: :railway_stations_routes
class RailwayStation < ApplicationRecord
has_many :railway_stations_routes
has_many :routes, through: :railway_stations_routes
我的任务:在视图中路由( show.html.erb )按顺序编号显示电台列表(station_number
- 连接表中的整数字段)
当我写代码时:
<% @route.railway_stations.each do |station| %>
<%= station.railway_stations_routes.inspect %><%= station.title %>
显示:
ActiveRecord::Associations::CollectionProxy [#<RailwayStationsRoute id: 2, railway_station_id: 2, route_id: 1, station_number: 2>]Saint-Petersburg
我们可以看到station_number
但如果我将Inspect更改为station_number
.. display:
undefined method `station_number' for #<RailwayStationsRoute::ActiveRecord_Associations_CollectionProxy:0x007fc3cffe3ef0> Saint-Petersburg
因为我在railwayStation模型中没有station_number方法
接下来我在连接表中创建了范围:
scope :ttt, -> { select('railway_stations.*,
railway_stations_routes.station_number') }
&安培;在视图中更改了代码:
<%= station.railway_stations_routes.ttt %><%= station.title %>
显示:
#<RailwayStationsRoute::ActiveRecord_AssociationRelation:0x007fc3cff15190>Saint-Petersburg
问题:如何以数字格式(station_number
)生成此结果?
(如下面的代码)
2 Saint-Petersburg
答案 0 :(得分:0)
试试这个
<% @route.railway_stations.select("railway_stations.*,railway_stations_routes.station_number").each do |station| %>
<%= station.station_number %><%= station.title %>
<%end%>