Rails Javascript if else条件使用Controller中的变量

时间:2012-01-02 13:06:10

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems ruby-on-rails-3.1

查看

<%= link_to "Link", {:action => "AjaxView",:col => "colname"}, 
            :update => "Ajaxcall", :remote => true %>

控制器

  def AjaxView
    @vars= Var.find(:all,:conditions => { :varName=> "one" },:select=>(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
   {
     $("#2").text("<%= escape_javascript(render(:partial => "var") %>");
   }

这里的问题是这个变量“col”在AjaxView.js.erb文件中没有得到它的确切值,而且我的If else条件没有被执行。我在这里缺少什么?

3 个答案:

答案 0 :(得分:0)

col中未分配局部变量AjaxView.js.erb。我认为你打算把它写成params[:col]

var周围的双引号也应该是单引号,以便与周围的双引号很好地搭配。

答案 1 :(得分:0)

{:action => "AjaxView",:col => "colname"}

这不是你为link_to构建网址的方式。

访问AjaxView方法的路线是什么? 它应该是:link_to "Link", AjaxView_resources_path(:col => "colname")

在控制器中,您需要设置一个实例变量@col = params[:col]才能在视图中使用它。

ps:您应该将方法命名为ajax_view而不是AjaxView。

答案 2 :(得分:0)

  if ( @col.to_s == "colName") {
      $("#3").text("<%= escape_javascript(render(:partial => "var") %>");
     }
      elsif ( @col.to_s == "colName1")
     {
     $("#2").text("<%= escape_javascript(render(:partial => "var") %>");
     }