使用计数器或传递参数增加哈希名称

时间:2014-11-18 21:12:45

标签: ruby variables hash

我正在尝试创建一个方法,在调用并给出参数时会相应地命名哈希值。

def message_info(number)

        @browser.link(:data_class => 'home.conv.message.message_info').click
        messageid = @browser.span(:data_class, 'home.conv.view_message_info.client_id').text
        sender = @browser.span(:data_class, 'home.conv.view_message_info.sender_name').text
        senderusername = @browser.span(:data_class, 'home.conv.view_message_info.sender_user_name').text
        recipient = @browser.span(:data_class, 'home.conv.view_message_info.recipient_name').text
        recipientusername = @browser.span(:data_class, 'home.conv.view_message_info.recipient_user_name').text
        created = @browser.span(:data_class, 'home.conv.view_message_info.created').text
        status = @browser.span(:data_class, 'home.conv.view_message_info.status').text
        ttl = @browser.span(:data_class, 'home.conv.view_message_info.ttl').text

        message_info_hash + number = {

          'Message ID' => "#{messageid}",
          'Sender Name' => "#{sender}",
          'Sender Username' => "#{senderusername}",
          'Recipient name' => "#{recipient}",
          'Recipient Username' => "#{recipientusername}",
          'Created' => "#{created}",
          'Status' => "#{status}",
          'TTL' => "#{ttl}"

        }

      end

1 个答案:

答案 0 :(得分:0)

而不是尝试设置命名的局部变量(没有任何结果),而是将您的消息信息存储在哈希中,并使用number作为密钥。

def initialize
  @message_info = {}
end 

def message_info(number)
  # ...
  @message_info[number] = { ... }
end

您也不需要将值插入字符串以对其进行字符串化。而不是:

'Message ID' => "#{messageid}"

使用:

'Message ID' => messageid.to_s