尝试使用gem显示来自API的联系人列表,但只能显示几个字段

时间:2018-03-10 15:37:50

标签: html ruby-on-rails ruby api hubspot

我尝试在表格中显示HubSpot API(https://developers.hubspot.com/docs/methods/contacts/get_contacts)中的所有联系人列表。我使用的https://github.com/adimichele/hubspot-ruby宝石主要是有帮助的。我能够使用以下代码获取大部分信息:

<div class ="container-fluid text-center">
<div class="row">
    <h1>Contacts</h1>
</div>
<br />

<table class="table">
    <thead>
        <tr>
            <th scope="col">First Name</th>
            <th scope="col">Last Name</th>
            <th scope="col">Company</th>
            <th scope="col">Email</th>
        </tr>
    </thead>    
    <tbody>

        <% 
            (Hubspot::Contact.all).each do |contact|
            info = contact.properties
        %>
        <%= info %>
                <tr>
                    <th scope="row"><%= info[:firstname] %></th>
                    <th scope="row"><%= info[:lastname] %></th>
                    <th scope="row"><%= info[:company] %></th>
                </tr>
        <% end %>
    </tbody>
</table>

但是,默认情况下,gem仅显示Contact的3个属性。虽然HubSpot API发送的内容比电子邮件更多,但我在挑选和选择我想要的属性方面遇到了麻烦。我能够通过它自己成功地挑选出电子邮件属性:

 <tbody>

        <% 
            ( Hubspot::Contact.all({ property: 'email' }) ).each do |contact|
            info = contact.properties
        %>
        <%= info %>
                <tr>
                    <th scope="row"><%= info[:firstname] %></th>
                    <th scope="row"><%= info[:lastname] %></th>
                    <th scope="row"><%= info[:company] %></th>
                    <th scope="row"><%= info[:email] %></th>
                </tr>
        <% end %>
    </tbody>

但是,我无法弄清楚如何在电子邮件上添加更多内容。例如,我收到语法错误:

( Hubspot::Contact.all({ property: 'email', 'firstname' }) ).each do 

( Hubspot::Contact.all({ property: 'email'})({ property: 'firstname'}) ).each do 

我考虑过废弃这一切并从一个新宝石开始。但唯一看起来值得等待的其他人(https://github.com/HubSpot/rHAPI)不能正确安装。所以我试图让第一个解决方案起作用。

感谢您提供任何帮助。我自学,从未在这里发帖。我在这里发帖非常紧张,所以对这个问题或我的代码的任何反馈对我来说意味着世界。

2 个答案:

答案 0 :(得分:0)

你可以尝试:

Hubspot::Contact.all.each do |contact|

然后你抓住整个对象,你可以获得构建表所需的部分,假设你需要的密钥位于从Hubspot返回的对象中。

我不熟悉那个宝石,但是降价似乎不太正常。如果密钥在.all.each中不可用,则使用过滤器不太可能。

我快速浏览了一下gem的lib,看不到会告诉我它会丢弃数据的任何内容。

答案 1 :(得分:0)

谢谢!解决方案是:

{ property: ['email', 'firstname'] }