Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Ruby if条件在javascript文件中无法正常工作_Ruby On Rails_Ruby_Ruby On Rails 3_Rubygems_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails Ruby if条件在javascript文件中无法正常工作

Ruby on rails Ruby if条件在javascript文件中无法正常工作,ruby-on-rails,ruby,ruby-on-rails-3,rubygems,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Rubygems,Ruby On Rails 3.1,控制器: def AjaxView @vars= Var.find(:all,:conditions => { :varName=> "one" },:select=>(params[:col])) @col = params[:col] respond_to do |format| format.js { render :layout=>false } end end AjaxView.js.erb if('<%= @col %>

控制器:

def AjaxView
  @vars= Var.find(:all,:conditions => { :varName=> "one" },:select=>(params[:col]))
  @col = params[:col]
  respond_to do |format|
    format.js { render :layout=>false }
  end
end
AjaxView.js.erb

  if('<%= @col %>' == 'colName'){
    $("#3").text("<%= escape_javascript(render(:partial => "var")) %>");
  } else if('<%= @col %>' == 'colName2'){
    $("#2").text("<%= escape_javascript(render(:partial => "var1")) %>");
  }
if(“”==“colName”){
$(“#3”).text(““var”)%>”;
}else if(“”==“colName2”){
$(“#2”).text(““var1”))%>”;
}
查看部分:

_var.html.erb

 <%= @vars[0].colName %>

_var1.html.erb

  <%= @vars[0].colName2 %>

如果我改变这个密码

$("#3").text("<%= escape_javascript(render(:partial => "var") %>"); 
$(“#3”).text(““var”)%%>”;
警报(“hi_one”)

$("#2").text("<%= escape_javascript(render(:partial => "var1") %>");
$(“#2”).text(““var1”)%%>”;
发出警报(“hi_two”)

它很好用

但是当我把上面的代码放进去时,它每次都会运行这两个代码,不知道为什么,是编译还是什么?出路是什么

渲染输出:

呈现测试/_var.html.erb(16.0ms) 渲染测试/AjaxView.js.erb(19.0ms) 在38ms内完成500个内部服务器错误

ActionView::Template::Error(缺少属性:colName): 1:


Firebug中的Javascripty输出为500错误

如果('''='colName')为客户端
JavaScript,则当前您的条件

这意味着

if('<%= @col %>' == 'colName'){
    $("#3").text("<%= escape_javascript(render(:partial => "var")) %>");
} else if('<%= @col %>' == 'colName2'){
    $("#2").text("<%= escape_javascript(render(:partial => "var1")) %>");
}

DOM元素ID不能是数字,也不能是有效的HTML。David,我更改了它,但仍然收到相同的问题。它是否呈现任何内容?是的,每次都呈现两个脚本,这会产生冲突ActionView::Template::Error(缺少属性:colName):根据ajaxview.js,存在语法错误
“var”)%>
应为“var”))%%>
“var1”)%%>
应该是
“var1”)%%>
谢谢迈克,这是一个很好的解释。它确实解决了我的问题。
<% if @col == 'colName' %>
  $("#3").text("<%= escape_javascript(render(:partial => "var")) %>");
<% elsif @col == 'colName2' %>
  $("#2").text("<%= escape_javascript(render(:partial => "var1")) %>");
<% end %>