Ruby在表中显示关联的资产数据

时间:2014-05-03 18:14:18

标签: ruby-on-rails ruby

我是RoR的新手,所以请你是异教徒。如果我搜索正确的话题,我不确定。但是,我花了一整天的时间试图找出,如何使用has_man,belongs_to等资产协会。

现在我有两个资产:

源码> pragma table_info( meetups );
0 | ID | INTEGER | 1个|| 1
1 |名称| VARCHAR(255)| 0 || 0
2 |业主|整数| 0 || 0
3 | dateOfInception |日期时间| 0 || 0
4 |家乡| VARCHAR(255)| 0 || 0
5 | created_at |日期时间| 0 || 0
6 |的updated_at |日期时间| 0 || 0
7 | ACTIVITY_ID |整数| 0 || 0

源码> pragma table_info(活动);
0 | ID | INTEGER | 1个|| 1
1 |名称| VARCHAR(255)| 0 || 0
2 |位置| VARCHAR(255)| 0 || 0
3 |开始|日期时间| 0 || 0
4 |持续时间|整数| 0 || 0
5 |描述| VARCHAR(255)| 0 || 0
6 | created_at |日期时间| 0 || 0
7 |的updated_at |日期时间| 0 || 0
8 |图像| VARCHAR(255)| 0 || 0
9 | meetup_id |整数| 0 || 0

所以我可以创建一个新的聚会并选择多个已保存的活动。对于每次聚会,我们都可以选择多项活动。如果我创建了一个聚会,他们也会正确存储相应的活动,如下图所示:

Image

然而,输出它们就像数组一样没用。如果活动名称出现,那就太好了。但那怎么可能呢?我尝试了很多东西,重命名db外键,在meetup控制器中创建一个find方法......但没有任何效果。请在这里帮助我 - 我想我已经非常接近,但是我不知道什么不起作用。

<% @meetups.each do |meetup| %>
  <tr>
    <td><%= meetup.name %></td>
    <td><%= meetup.owner %></td>
    <td><%= meetup.dateOfInception %></td>
    <td><%= meetup.homeTown %></td>
    <td><%= meetup.activity_ids %></td>
    <td><%= link_to 'Show', meetup %></td>
    <td><%= link_to 'Edit', edit_meetup_path(meetup) %></td>
    <td><%= link_to 'Destroy', meetup, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>

class MeetupsController < ApplicationController
before_action :set_meetup, only: [:show, :edit, :update, :destroy]

# GET /meetups
# GET /meetups.json
def index
  @meetups = Meetup.all
end

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

在您的观点中尝试此操作:

meetup.activities.map(&:name).join(',') 

那应该显示你想要的数据。出于性能原因,您需要添加.include(:activities) 加载你的聚会列表的控制器动作。

听起来你正试图塑造一个有和很多关系的模型吗?您需要第三个表来正确建模。

如果那不是您想要建模的,那么您应该从meetups表中删除activity_id列。