将 rails 实例变量用于 javascript 条件
Using a rails instance variable for javascript conditional
在我的application_controller中。
def ensure_service_agreement
if current_user.agrees_to_service == true
@tos = true
else
@tos = false
end
end
我的应用程序.js文件中有以下代码。
var tos = "<%= @tos %>";
if(tos == false){
$(".new-session-home").on('click', function (){
$('.booking.modal')
.modal('show');
})
}else{
$(".new-session-home").on('click', function (){
$('.tos.modal')
.modal('show');
})
}
javascript似乎没有注册var tos。 当我将第一个 if 语句设置为 true 或 false 时,我得到第二个模态(tos modal)
如果我设置 tos = 4 然后检查该数字,它会正常工作,所以我知道问题出在 rails 实例变量上。
如何让 JS 理解我的实例变量?
我使用了gon gem。
步骤:
宝石文件.rb
gem 'gon'
应用程序.html.erb
<%= include_gon %>
回到我的application_controller.rb
def ensure_service_agreement
if current_user.agrees_to_service == true
@tos = true
gon.tos = true
else
@tos = false
gon.tos = false
end
end
最后是我的 js
dayClick: function(date, allDay, jsEvent, view) {
if(gon.tos == true) {
$('.booking.modal').modal('show');
console.log(date)
} else {
$('.tos.modal').modal('show');
}
}
您正在尝试操作 js 文件中的 rails 代码。但是你不会在那里得到任何 erb 语法。
有多种解决方案可以解决此类请求。如果您要提交表单或重定向到某个 url,那么您可以使用 ujs 来执行此操作(使用 :remote => true
)。
UJS 响应.js.erb
文件中,您可以访问 js 和 erb 语法。
如果您没有提交或没有 url 更改,那么您只能使用 jquery 轻松执行此操作。
<a href='#' onclick="somefunction(true/false)">booking/tos</a>
作为你的代码结构,你应该选择UJS。
不确定,这是一个理想的解决方案。
您已ensure_service_agreement
方法中设置了值。
使用渲染器文件,如ensure_service_agreement.js.erb
或ensure_service_agreement.html.erb
并将值保留在输入标签中。
<input name='' id='tos' value = '<%= @tos %>'> use type hidden or style with display:none
并在 Js 文件中访问,例如
var tos = $('#tos').val();
相关文章:
- 应该在什么时候使用Javascript条件运算符
- 不使用关系运算符的JavaScript条件表达式
- 我需要一些javascript条件,比如媒体查询
- Javascript条件-不隐藏ID
- IE11是否删除了javascript条件编译
- JavaScript条件(如果并行)
- 在HTML中搜索字符串并返回True的Javascript条件
- javascript条件未到达else
- 推送前的JavaScript条件
- JavaScript 条件总是失败
- 如何处理 JavaScript 条件语句中的可为空的对象
- Javascript 条件返回语句(Shorthand if-else 语句)
- For 循环中的动态 Javascript 条件
- 如何理解“if ( obj.length === +obj.length )” Javascript 条件语句
- 这个Javascript条件检查是什么
- 获取数组中满足 Javascript 条件的第一个元素的高阶方法
- 如何使用JavaScript /条件注释测试浏览器是否符合CSS3
- Javascript 条件查找/替换
- 从 ASP.NET Web 窗体中的服务器端属性创建 JavaScript 条件
- 仅将特定元素添加到 html 正文中,具体取决于 javascript 条件