Rails 3:将params传递给javascript函数时出错

时间:2013-04-11 06:13:04

标签: javascript ruby-on-rails-3 haml

我正在尝试将值传递给JavaScript函数,但是当我单击锚标记(加上图标)时,它会在Firebug上给出以下错误。

我要做的是,点击“加号”,我将部分字段添加到表格中。我在这里做错了什么?

目前<th>内有一个带“+”的表格。我想将数据(从部分)附加到表格。

错误

SyntaxError: syntax error
[Break On This Error]   

add_fields(this, contact, &quot;&lt;tr class=\&#x27;fields\&#x27;&gt;\n&lt;td&gt...

帮助文件

module TestHelper
    def add_fields(name, obj)

        if (obj == 'contact')
            fields = render :partial => '/test/add_fields', :locals => {:map_values => ["Name", "URL", "Address"]}  
            link_to_function(name, h("add_fields(this, #{obj}, \"#{escape_javascript(fields)}\")"))

        elsif (obj=='company')
            fields = render :partial => '/test/add_fields', :locals => {:map_values => ["CName", "CURL", "CAddress"]}   
            link_to_function(name, h("add_fields(this, #{obj}, \"#{escape_javascript(fields)}\")"))
        elsif (obj=='lead')
            fields = render :partial => '/test/add_fields', :locals => {:map_values => ["LName", "LURL", "LAddress"]}   
            link_to_function(name, h("add_fields(this, \"#{obj}\", \"#{escape_javascript(fields)}\")"))
        end

    end
end

查看文件

=add_fields 'Add', 'contact'

partial _add_fields.html.haml

%tr.fields
  %td
    %select{:class => 'select-two'}
      - map_values.each do |e|
        %option #{e}

js文件

add_fields = function(obj, maptype, content){

  //console.log(obj.closest('.table'));
  var parent = $(obj).closest('.table');
  var msg_obj = $('.alert.alert-info',parent);
  if(msg_obj.length > 0) {
    msg_obj.closest('tr').addClass('hidden');
  }

  $('tbody',parent).append(content);
  $("select.select-two").select2({allowClear: true});

};

1 个答案:

答案 0 :(得分:2)

更改以下行

    link_to_function(name, h("add_fields(this, \"#{obj}\", \"#{escape_javascript(fields)}\")"))

    link_to_function("name", "add_fields(this, '#{obj}', '#{j(fields)}'
)".html_safe) 

h()函数在rails 3中已过时了

使用raw "string"

"string".html_safe