为什么这个erb代码会为[]:Array“抛出”未定义的方法'匹配'?

时间:2013-12-24 03:09:31

标签: regex sinatra erb

希望有人可以帮我解决这个问题。

我有一个实例变量,在一个参数中包含一些字符串值。以下是字符串值:

"The Hoboken Four" "Anita Baker" "No One Cares" "Giant" "Taking A Chance On Love" "[]" "["quiz"]" "quiz"

我想只显示匹配的值: “霍博肯四人”“安妮塔贝克”“无人关心”“巨人”“以爱情为契机”

以下是我app.rb中的代码:

post '/:form_type' do
  @array = []
  @results = params
  @results.each do |key, value|
    if value.match(/\w[^["quiz"]]/)
      @array << value
    end
    @array
  end
    erb :results
end

以下是我在视图中的代码:

<% @array.each do |item| %>
  <p><%= item %></p>
<% end %>

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

仅仅为了记录,我认为发生的事情是OP在参数名称中使用[],最有可能以唯一名称发送所有值。例如,如果HTML表单看起来像:

<input type="text" name="title[]"/>
<input type="text" name="title[]"/>

并且用户输入FirstSecond,Sinatra将解释参数名称中的[]并汇总表格中的不同值:

{"title"=>["First", "Second"]}

因此,在OP的代码中,value.match正在抛出,因为值类型为Array(如错误消息所示)。