引号内的引号

时间:2012-07-04 23:41:51

标签: ruby-on-rails ruby string

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

这是我的代码:

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

我的问题是我有两套"'。当我尝试没有引号的result[name]之类的东西时,我得到错误:未定义的局部变量或方法`name'。

更新,因为我需要数据源以使其中的数据和数据具有“”s

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

3 个答案:

答案 0 :(得分: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'"

答案 1 :(得分:0)

你应该像以下那样重写:

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

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

基本上,评估beestings中的ruby块的结果应该是所需的字符串 - 你不需要做任何嵌套的beestings。

答案 2 :(得分:0)

<input type="text" data-source='<%= @results.collect(&:name).to_json %>' data-provide="typeahead">

属性中的引号在html5中是可选的