我有以下使用ZenDesk的功能.我想将current_user详细信息注入表单,如下所示.(这是我的html.haml模板).但是,我无法弄清楚如何使这项工作.
:javascript
if (typeof(Zenbox) !== "undefined") {
Zenbox.init({
dropboxID: "xxxxx",
url: "xxxxx.zendesk.com",
tabID: "support",
tabColor: "black",
tabPosition: "Left",
requester_name: =current_user ? "#{current_user.first_name} #{current_user.last_name}" : "" ,
requester_email: =current_user ? "#{current_user.email}" : "" ,
hide_tab: true
});
}
Run Code Online (Sandbox Code Playgroud)
简而言之,如何将rails变量注入haml中的:javascript元素.
在Rails 3.1中,无法使用诸如<%= @ foo%>之类的语法访问资产js.erb或coffee.erb文件中的控制器实例变量,其中@foo在控制器中设置.那么问题是将控制器变量传递给CoffeeScript或JavaScript资产的最佳方法是什么.
这个问题在论坛上有多种复杂形式的问题,但我再次提出这个问题的意思是要有一个所有建议聚集在一起的地方,并且所提供的代码简单易读.另请注意,我特指的是资产,而不是查看响应文件.
controller ruby-on-rails erb instance-variables coffeescript
我正在尝试将字符串值分配给我的.erb文件中的javascript对象,如下所示:
var data = {
'name': '<%= @product.name %>',
...
};
Run Code Online (Sandbox Code Playgroud)
问题是,如果值name是Tom's small ears,
输出data.name将是Tom's small ears.
有没有办法逃脱特殊字符?
我尝试过,'name': '<%= raw @product.name %>'但Uncaught SyntaxError: Unexpected identifier输出到控制台.
做<%= escape_javascript @product.name %>输出Tom\'s small ears
编辑
@Stefan在MrYoshiji's回答中的评论对我有用.
我是Rails的新手,在控制器中我有:
class PagesController < ApplicationController
def home
@temp = "Hello"
end
end
Run Code Online (Sandbox Code Playgroud)
我已经读过,我必须将javascript代码放在application.js中(告诉我,如果是),我有:
window.onload=function(){alert("<%= j @temp %>")}
Run Code Online (Sandbox Code Playgroud)
显然警告打印字符串"<%= j @temp%>"如何将变量@temp传递给javascript,以便警报可以打印Hello?
谢谢
我正在Ruby on Rails中创建一个网站.我有一个控制器动作,呈现如下视图:
def show
time_left = Time.now.to_i - 3.hours.to_i
@character = current_user.characters.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @character }
end
end
Run Code Online (Sandbox Code Playgroud)
这很好,因为它像我喜欢的那样呈现show.html.erb.然而,我想以某种方式将time_left作为Javascript变量传递给视图,因为这个值被倒计时JQuery插件使用.
我可以在HTML页面上放置一个javascript块并打印出一个实例变量,如下所示:
<script type="javascript"> $('#countdown').countdown('<%= @time_left =>')</script>
Run Code Online (Sandbox Code Playgroud)
但我想将所有的JS保存在一个外部文件中,在页面外可以有人就如何实现这一点给出一些建议吗?
我有一份药物清单和一份疫苗清单,我分别从药品和疫苗中提取.药物清单的格式为medicine_name,疫苗清单也是如此.我使用这段代码将这两个存储在变量中.
var injections=<%=@injections%>;
var medicines=<%=@medicines%>;
Run Code Online (Sandbox Code Playgroud)
在我看来,我有药物和注射的选择标签,但是当我尝试使用以下代码将这些变量附加到相应的标签时.我没有得到任何结果请帮忙
$('.addmedicines').click(function()
$('.medicines').append(medicines);
});
$('.addinjections').click(function(){
$('.injections').append(injections);
});
Run Code Online (Sandbox Code Playgroud)
这里.injections是指定用于接种疫苗标签的类..medicines是指定用于选择药物标签的类.而.addmedicines和.addinjections是html按钮.
编辑:
当我尝试在javascript中显示注射和药物时,它们显示如下:
药物:
<option>Med1</option><option>Med2</option><option>Med3</option><option>Med4</option>
Run Code Online (Sandbox Code Playgroud)
注射:
<option>i1</option><option>i2</option><option>i3</option><option>i4</option>
Run Code Online (Sandbox Code Playgroud)