我有一个jQuery脚本,它向表单中添加了一个新字段,这个字段包含来自数组的动态信息.问题是我不知道如何添加array.每个选项都可以在javascript中填充select字段的选项,而不会 destruct HAML缩进并导致错误.

以下是我的最佳try ,但没有成功:

%script(type="text/javascript")  
  $('#mylink').click(function() {  
  $('#mylink').after('<select>  
  - myarray.each do |options|  
     <option value="#{options.id}">#{options.name}</option>  
  </select>);  
  )};

还try 了:javascript过滤器,但没有成功.

推荐答案

通常,如果haml中存在问题,这意味着您应该将棘手的部分重构为助手或部分,并将其称为.

// some_helper.rb
def new_snazzy_select_tag(options = [])
  select_tag 'tag_name_here', options.map { |option| [option.id, option.name] }
end

此外,您应该使用:javascript过滤器来呈现javascript,因为它会为您将其放入脚本标记中,并允许缩进.

最后,您可以在haml的任何地方使用#{ruby_expression}个过滤器,包括:javascript个过滤器,当您需要将ruby表达式的结果输出到不是html元素直接内容的地方时,这非常方便.

// some_view.html.haml
:javascript
  $('#mylink').click(function() {  
    $('#mylink').after("#{escape_javascript new_snazzy_select_tag(myarray)}");
  };

Ruby相关问答推荐

如何在 Shopify 脚本编辑器中显示数组值?

如何返回此 OOP Ruby 代码最后一行中的变量?

Ruby open-uri 重定向被禁止

get.chomp() 与 STDIN.gets.chomp() 有什么区别?

减少哈希值

如何增加 ruby​​ 应用程序的堆栈大小.递归应用程序获取:堆栈级别太深(SystemStackError)

什么是 '?-mix' 在 Ruby 正则表达式中

以编程方式获得完整的 Ruby 版本?

Ruby 局部变量未定义

Windows 上的 Jekyll:Pygments 不工作

在 Ruby 早期转义 .each { } 迭代

如何将 each每个方法添加到 Ruby 对象(或者我应该扩展 Array)?

为什么 Ruby 使用 respond_to?而不是 responds_to?

按键对哈希进行分组并对值求和

Ruby数组each_slice_with_index?

用反斜杠单引号替换单引号

Ruby 2 中的命名参数

Xcode - 配置:错误:在 $PATH 中找不到可接受的 C 编译器

向实例对象添加方法

查找两个数组的共同点