【问题标题】:Rails Javascript if else condition using variable from ControllerRails Javascript if else 条件使用来自控制器的变量
【发布时间】:2012-01-02 13:06:09
【问题描述】:

查看

<%= 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 条件没有得到执行。我在这里错过了什么?

【问题讨论】:

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


【解决方案1】:

局部变量col 未在AjaxView.js.erb 中赋值。我想你的意思是写成params[:col]

var 周围的双引号也应该是单引号,以便与周围的双引号配合使用。

【讨论】:

  • 在我的 if 条件下尝试使用 params[:col],但没有成功。
【解决方案2】:
{:action => "AjaxView",:col => "colname"}

这不是您为 link_to 构建 url 的方式。

访问AjaxView方法的路径是什么?
它应该类似于:link_to "Link", AjaxView_resources_path(:col =&gt; "colname")

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

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

【讨论】:

  • 感谢@Robin 的回复,当我在控制器和 AjaxView.js.erb 中放入“(@col = params[:col])”时运行此“(如果(() == "colName"))",还是不行。
  • 问题是,以您建立链接的方式,我什至不知道您的操作是如何执行的......
  • 很多人对此表示怀疑,有些人甚至建议我应该开始使用表单而不是链接,有博客写在这上面,但不知何故我能够毫无问题地运行它。它对我有用,我现在面临的唯一问题是尝试使用多个选项,为此我必须在 .js.erb 文件中运行 if 条件,如果你能帮助我运行它,我将非常感激.我的工作差不多完成了。
  • 另外,AjaxView_resources_path(:col => "colname") 和 {:action => "AjaxView",:col => "colname"} 一样,只是写法不同,不管我我在大括号中书写作为 HTML 输入。
  • 我不认为它是...... rails 应该如何知道要使用哪个控制器?另外,我不明白你为什么需要一个表格。在这种情况下,链接很好。
【解决方案3】:
  if ( @col.to_s == "colName") {
      $("#3").text("<%= escape_javascript(render(:partial => "var") %>");
     }
      elsif ( @col.to_s == "colName1")
     {
     $("#2").text("<%= escape_javascript(render(:partial => "var") %>");
     }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 2021-12-08
    • 2016-12-04
    • 2020-05-14
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多