我是更新的rails并且面临复杂的问题,试图在haml模板中的coffeescript中使用ruby helper方法中的变量。
这是haml中的代码
:coffee
$('input#field').blur ->
input = $('input#field').val()
#{ ruby_method( input )}
ruby_helper.rb
def ruby_method (arg)
if arg
@model = Model.new(arg)
end
end
这导致如下错误
未定义的局部变量或方法
还尝试了实例变量
:coffee
$('input#field').blur ->
@input = $('input#field').val()
#{ ruby_method( @input )}
这不能将它传递给辅助方法。
如何在ruby helper方法中获取javascript变量?
提前致谢!
答案 0 :(得分:2)
Coffee Script和Rails引擎关系?
rails和coffee脚本之间没有关系,并且可以在咖啡脚本中访问rails中的任何内容。
我该怎么办?
只需在视图文件夹中创建def.js.erb
文件并编写您的javascript代码即可。在此文件中,您可以访问方法中的所有实例变量。
它如何调用method.js.erb?
使用它:
respond_to do |format|
format.js
end
这将调用method.js.erb文件而不是method.html.erb文件。
希望有所帮助
答案 1 :(得分:1)
简短的回答是,你不能。 Ruby在您的服务器上运行,但您放入模板中的任何JavaScript(CoffeeScript发出的)都将在浏览器中运行。
您放在coffee:
块中的任何内容必须才是有效的CoffeeScript。正如其他人在评论中指出的那样,如果你想让Rails通过JS做一些事情,你就需要Ajax。
例如,要使用Ajax创建Model
,请在JS中设置一个带有create
操作和post
的控制器。
有关详细信息,请参阅优秀的Working with JavaScript in Rails教程。