Rails 在 Rails 中,View 中的 JavaScript 代码调用 Helper 中的方法,如何传入一个整型参数?

roar · 2014年10月24日 · 最后由 huobazi 回复于 2014年10月24日 · 4381 次阅读

背景是这样的:

我通过 Ajax 从 controller 中获取到一个数字,现在需要在 javascript 代码中调用 helper 文件中的一个方法对这个数字进行处理,然后再赋给 view 页面中的某个标签显示出来。

但是现在往这个方法传入这个整数时一直出现问题。

javascript 代码如下:

var disk_size = "<%= storage_in_proper_unit(" + value + ") %>";
$('#vcluster_vm_temp_disksize').val(disk_size);

其中,value 是获取到的整数,storage_in_proper_unit() 方法是 helper 中的一个函数,它的参数一个整数(不是字符串)。 执行时报错:

comparison of String with 9999999999 failed

请教各位应该如何解决,非常感谢!

javascript 调用 rails helper 方法?

#1 楼 @hz_qiuyuanxin 刚才标题可能有点歧义,我完善了一下。在 rails 的 view 页面中通过 Ajax 从 controller 中获取一个整数,然后再 view 页面中的 javascript 代码中继续处理,处理结果再赋给某个标签显示出来

你的 value 在那赋值的?或者多上面几行代码贴出来。

var disk_size = "<%= storage_in_proper_unit(" + value + ") %>";

这个感觉好诡异,从代码看 value 应该是用 js 赋值的,rails 的 helper 应该是在服务器端执行吧,报错是不是服务器端执行的时候,js 变量还没有接收到正确的整数值导致的。

#2 楼 @roar

你认为这段代码,能够发起 ajax 请求到 rails 服务?

var disk_size = "<%= storage_in_proper_unit(" + value + ") %>";

#3 楼 @huobazi value 是 views 的 javascript 代码向 controller 发起请求获取的返回值,这个返回值是个整数。这一步我已经操作完了,现在我需要做的就是在 javascript 代码中调用 helper 中的一个方法,而这个方法需要这个返回值 value 作为参数

#4 楼 @msms rails 的 helper 不是只能在 view 中引用吗?在 controller 中是不能使用的。现在的 value 已经获取到返回值了,所以只需要考虑如何在 view 的 javascript 代码中调用 helper 中的方法,并把这个整数 value 正确的传进去。

var disk_size = "<%= storage_in_proper_unit(" + value + ") %>";

storage_in_proper_unit() 方法就是 helper 中的方法,value 就是一个整数,我现在就像让这个方法能够正确执行,但是总是出现问题。。%>_<%

#5 楼 @hz_qiuyuanxin 这个代码不是从服务器发起 Ajax 请求的,这部分工作我已经完成了,value 就是返回的整数值,现在需要做的就是对这个 value 做一个处理。。可以参考下 6 楼的解释。。:)

#8 楼 @roar

js 代码是在浏览器这边运行的,你认为浏览器这边的进程能够调用 rails 里的 helper 方法么?

#7 楼 @roar 你要明白所有与 Ruby 相关的代码只能在服务器端执行,与 js 相关的代码只能在浏览器执行,Ruby 生成一些 js 或 HTML 给浏览器使用,而不能交叉使用,,

view 的 help 函数是在服务器端执行的,javascript 代码是在浏览器前端执行的,或许你需要把 storage_in_proper_unit() 的逻辑从后端移到前端?就是在 javascript 中定义一个同样的 storage_in_proper_unit() javascript 函数

最简单的方法,Ajax 请求之后后端直接输出需要的格式,Javascript 直接拿来用就可以了。

根据你的描述,你走错路了

方法一 按照 12 楼说的做 方法二 保持现状 再来一次 ajax 调用服务器端代码。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号