gpt4 book ai didi

ruby-on-rails - 从散列中的 ruby​​ 字符串编写 javascript 函数

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:36 26 4
gpt4 key购买 nike

我有构建一些 Javascript 代码的 ROR Helper。在帮助程序中,我有定义此 javascript 代码的选项和变量的散列。其中之一是包含 JS 函数的字符串,问题是它在使用 to_json 时呈现为字符串而不是函数。

我怎样才能让它发挥作用?

例子:

在我的助手中我有这段代码:

h = {url: '/some/url', async: false}
h[success] = "function(result) {alert(result);}"

"<script type='text/javascript'> jQuery.ajax(#{h.to_json}); </script>"html_safe

此代码将生成:

<script type='text/javascript'>
jQuery.ajax({
url: '/some/url',
async: false,
success: "function(result) {alert(result);}"
});
</script>

我想要实现的是代码(成功部分没有“..”):

<script type='text/javascript'>
jQuery.ajax({
url: '/some/url',
async: false,
success: function(result) {alert(result);}
});
</script>

最佳答案

您可以从 h hash 中创建一个 string 而不是使用 to_json;例如:

def js_code
h = {url: '"/some/url"', async: false}
h[:success] = "function(result) { alert(result); }"
s = h.map { |k, v| "#{k}: #{v}" }.join(",")

"<script type='text/javascript'> jQuery.ajax({#{s}}); </script>".html_safe
end

请注意,额外的双引号 (") 已添加到 '"/some/url"' 中,以便将它们保留在最终字符串中。

输出:

<script type='text/javascript'> jQuery.ajax({url: "/some/url",async: false, success: function(result) { alert(result); }}); </script>

关于ruby-on-rails - 从散列中的 ruby​​ 字符串编写 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45879762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com