0

我正在尝试在输入字段中创建一个值数组。但是,这些值需要有引号,而且我很难将引号相互抵消。

这是我的代码:

<input type="text" data-provide="typeahead"
       data-source='[<% @results.each do |result| %>"<%= result['name'] %>",<% end %>]'>

我的问题是我有两组"'. 当我尝试result[name]不带引号之类的东西时,我得到错误:未定义的局部变量或方法“名称”。

更新,因为我需要数据源来拥有 ''s 和数据里面有 ""s

我怎样才能解决这个问题?

4

3 回答 3

2

尝试这个

<input type="text" data-provide="typeahead" data-source="[<%= @results.map { |r| "'#{r['name']}'" }.join(',') %>]">

在 IRB 这就是发生的事情

>> results = [{'name' => "abc"}, {'name' => "fds"}]
=> [{"name"=>"abc"}, {"name"=>"fds"}]
>> results.map { |r| "'#{r['name']}'" }.join(',')
=> "'abc','fds'"
于 2012-07-04T23:52:24.170 回答
0
<input type="text" data-source='<%= @results.collect(&:name).to_json %>' data-provide="typeahead">

在 html5 中,属性周围的引号是可选的

于 2012-07-05T03:55:52.593 回答
0

您应该将其重写为如下所示:

   <input type="text" data-provide="typeahead" data-source="[<%= @results.each {|result| result['name']} %>">

请注意,此代码未经测试。

本质上,评估 beestings 内的 ruby​​ 块的结果应该是所需的字符串 - 您不需要对 beestings 进行任何嵌套。

于 2012-07-04T23:55:03.850 回答