Rails将字符串显示为数组

时间:2014-07-14 20:16:39

标签: html ruby-on-rails-3

首先,我提前道歉我可能会在这个问题中显示任何不正确的术语或对ruby / rails / html的一般误解,因为我还在学习语言及其工作方式。我已经获得了一个gui来处理和修复从rails 3.0升级到3.2之后的错误。我在许多地方都看到了文物。

具体而言,我在这篇文章中要求的是字符串显示问题。我所拥有的简短版本是一个显示在网页中的消息线程,该网页看起来与您现在在智能手机上的大多数短信客户端中看到的内容非常接近。如果系统知道他们是谁(在我们这里注册),那么该页面会显示一个人名,如果不是,则显示一个手机号码。

然而问题是,它显示为:而不是显示5554440002,它显示为: [“(”,“5”,“5”,“5”,“”)“,”“,”4“,”4“,”4“,” - “,”0“,”0“,”0 “,”1“]

环顾网络,在堆栈溢出时,我发现this post最接近我的问题。但是,在移动电话号码中删除= out of<%=结束的建议不再显示。

生成此输出的代码行是:

<%= find_associated_account conversation_message['from'] -%>

编辑1(定义):

  def find_associated_account(input)
    if input[0..0] == $operator.domestic_code.to_s
      input = input[1..10]
    end
    if @account.associated_accounts and @account.associated_accounts.count > 0      
      if !(input.match(/@/)) && !(input.match(/MISSING_MAILBOX/))
        input = input[0..9]
      end
      begin
        acc = @account.associated_accounts.find_by_number(input)
        if acc
          return get_display_name_for_account(acc)
        end
    end
    return format_mdn(input)
  end

  def format_mdn(input)
    domestic_length = $operator.domestic_mask.count('#')
    number_cc_stripped = input.sub(/\A[#{$operator.domestic_code}]/, '')
    if /^[0-9]{#{domestic_length}}$/.match(number_cc_stripped)
      result = []
      count = 0
      $operator.domestic_mask.each_char do |c|
        if c == '#'
          result << number_cc_stripped[count,1]
          count += 1
        else
          result << c
        end        
      end
      return result.to_s
    end
    return input
  end

我们将非常感谢任何建议,并提供所需的任何其他信息。

1 个答案:

答案 0 :(得分:0)

在弄乱了format_mdn的返回值后修复了这个问题。我将结果的初始化更改为&#34;&#34;而不是我猜测改变变量类型的[]?无论如何,这个定义的最终代码是:

def format_mdn(input)
  domestic_length = $operator.domestic_mask.count('#')
  number_cc_stripped = input.sub(/\A[#{$operator.domestic_code}]/, '')

  if /^[0-9]{#{domestic_length}}$/.match(number_cc_stripped)
    result = []
    count = 0
    $operator.domestic_mask.each_char do |c|
      if c == '#'
        result << number_cc_stripped[count,1]
        count += 1
      else
        result << c
      end        
    end
    return result.join("")
  end
  result = number_cc_stripped
  return result
end