希望有人可以帮我解决这个问题。
我有一个实例变量,在一个参数中包含一些字符串值。以下是字符串值:
"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 %>
感谢您的帮助!
答案 0 :(得分:0)
仅仅为了记录,我认为发生的事情是OP在参数名称中使用[]
,最有可能以唯一名称发送所有值。例如,如果HTML表单看起来像:
<input type="text" name="title[]"/>
<input type="text" name="title[]"/>
并且用户输入First
和Second
,Sinatra将解释参数名称中的[]
并汇总表格中的不同值:
{"title"=>["First", "Second"]}
因此,在OP的代码中,value.match
正在抛出,因为值类型为Array
(如错误消息所示)。