0

我正在研究一种方法来构建一个名为派对的活动的客人名单。每个受邀客人的 user_id 存储在一个隐藏字段中,以空格分隔。

<%= hidden_field_tag 'guestlist', nil, :class => 'guest_list' %>

当用户邀请新客人时,客人的 ID 将添加到该字段并存储。

我试图找出一种方法,以便当用户编辑现有聚会时,已邀请客人的 ID 会显示在隐藏的 guest_list 字段中。

有没有办法用嵌入式 Ruby 做到这一点?类似于以下内容:

<% @party.guests.each do |guest| %>
 Do something here
<% end %>
4

1 回答 1

3

试试这个(为了便于阅读,分两步):

<% guest_ids = @party.guests.map(&:id).join(",") %>
<%= hidden_field_tag 'guestlist', guest_ids, :class => 'guest_list' %>

第一行将调用.id每个客人,然后将它们收集在一个数组中(如[1, 4, 12]),然后.join将它们放入一个字符串中,它将使用","来分隔它们。

编辑.map(&:id)和说的一样:

@part.guests.map do |guest|
    guest.id
end

但它被浓缩为那个&:id。这.id显然是我们要调用的方法名称以及我们要收集其结果的方法,& 基本上将其转换为块。您可以阅读这篇文章以获取更多信息,或者更好地阅读这篇 SO 帖子

于 2012-07-05T19:58:48.317 回答