Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 转义用户通过Rails应用程序中的文本字段输入的撇号?_Javascript_Ruby On Rails_Xhtml_Escaping - Fatal编程技术网

Javascript 转义用户通过Rails应用程序中的文本字段输入的撇号?

Javascript 转义用户通过Rails应用程序中的文本字段输入的撇号?,javascript,ruby-on-rails,xhtml,escaping,Javascript,Ruby On Rails,Xhtml,Escaping,更新:如果您查看我在下面的更新中粘贴的javascript代码,variation.name变量周围有单引号。我想我只是按照一个教程做的。事实证明,当我把它们换成双引号时,一切都正常。问题:这是一个稳定的解决方案吗?还是实现escape\u javascripthelper更好? 我有一个Rails应用程序,用户可以在其中输入字段值。然后,其他用户可以通过从下拉列表中选择,将该值添加到他们的配置文件中。我正在使用集合_selecthelper来呈现下拉列表。我有一点javascript绑定到这

更新:如果您查看我在下面的更新中粘贴的javascript代码,variation.name变量周围有单引号。我想我只是按照一个教程做的。事实证明,当我把它们换成双引号时,一切都正常。问题:这是一个稳定的解决方案吗?还是实现
escape\u javascript
helper更好?

我有一个Rails应用程序,用户可以在其中输入字段值。然后,其他用户可以通过从下拉列表中选择,将该值添加到他们的配置文件中。我正在使用集合_selecthelper来呈现下拉列表。我有一点javascript绑定到这个下拉列表,它识别父选择,然后显示特定的子选择

问题是一些用户输入的值中包含撇号。Firebug告诉我撇号破坏了javascript。当我手动删除所有撇号以进行测试时,javascript功能完美

今天早些时候,我问了一个关于在呈现的html文本中转义符号的问题,现在我知道您使用了。从我在网络上读到的内容来看,撇号是不可避免的。如果我错了,并且没有撇号,那么我不确定如何用集合实现它,因为我尝试了许多组合,但都不起作用

下面是创建下拉列表的代码行:

<%= season_form.collection_select :variety_id, Variety.find(:all), :id, :name, :prompt => "Optional: Variety" %>
“可选:多样性”%>
谢谢

更新 这是我的javascript。我有商品的等级制度。作为解释:此javascript允许我的用户从下拉列表中选择产品,然后自动将第二个下拉列表限制为仅属于用户选择的任何产品的品种。只要品种名称中没有撇号,它就很有效

此外,我尝试在几乎所有元素前面添加escape_javascript,但没有一个元素解决了这个问题。Rails文档在此帮助程序中不存在,因此在示例方面没有太多内容。谢谢你的帮助

var varieties = new Array();
<% for variety in @varieties -%>
  varieties.push(new Array(<%= variety.product_id %>, '<%=h variety.name %>', <%= variety.id %>));
<% end -%>

function collectionSelected(e) {
  product_id = e.getValue();
  options = e.next(1).options;
  options.length = 1;
  varieties.each(function(variety) {
    if (variety[0] == product_id) {
      options[options.length] = new Option(variety[1], variety[2]);
    }
  }); 
}
var varieds=newarray();
推送(新数组(,'',);
功能集合已选择(e){
product_id=e.getValue();
选项=e.next(1)。选项;
选项1.length=1;
品种。每个(功能(品种){
if(品种[0]==产品标识){
期权[options.length]=新期权(品种[1],品种[2]);
}
}); 
}
编辑:

我刚刚意识到,您不应该在服务器端代码中转义。您应该在javascript代码中转义。有关javascript转义函数,请参见此处:

您应该使用api中的escape_javascript()

您可以使用gsub并替换所需的内容

我通常使用select帮助器,只需将其传入即可。我不认为collection\u select使用这个

Variety.all.collect{|v| [v.id, v.name.gsub("'", "\'")]}
对于collection_select,您可以在使用记录之前“修复”记录

varieties = Variety.all.map{|v| v.name.gsub("'", "\'")}
collection_select(:variety_id, varieties, :id, :name, :prompt => "Optional: Variety")

在原始问题中添加javascript作为更新。见上文。