【问题标题】:JavaScript If/Else Statement Based On Current Controller基于当前控制器的 JavaScript If/Else 语句
【发布时间】:2015-02-12 06:09:23
【问题描述】:

在我的 Rails 应用程序中,我想在我的“事件”控制器中执行某个 JS 块,并在我的“movie_interests”控制器中执行另一个块。

我知道可以使用 'params[:controller] == ...' 来检查这种情况,但这是 ruby​​ 代码。如何从 javascript 文件中完成此操作?

$(".search-results").on('click', ".movie-click", function(){
    if (params[:controller] == "events") {    //This is incorrect syntax, but shows more or less what I want to accomplish
      $('#event_rt_id').val($(this).data("id"));
      $('#movie-poster').html('<img id="selected-poster" src="' +               $(this).data("poster") + '" />' );
    }
});

【问题讨论】:

  • 堆栈片段用于可以在网站上运行的代码,具有完整的 HTML 等。对于代码块,请使用代码块按钮。 (令人困惑,我知道。)

标签: javascript ruby-on-rails ruby model-view-controller


【解决方案1】:

一种可能的解决方案是在每个页面上包含一个唯一的 HTML 元素。例如,在由EventsController 呈现的页面上,您可以包含&lt;div class="events"&gt;。然后你的 JavaScript 代码就可以检查这些元素是否存在。

另一个选项是包含控制器名称,例如在 body 元素中。您可以在布局中执行此操作:

<body data-controller="<%= controller_name %>">

然后您可以在 JavaScript 中使用控制器名称。

不过我更喜欢第一种解决方案。

【讨论】:

    【解决方案2】:

    在你的application.html.erb中,添加如下代码

    <script type="text/javascript">
        window.controller = "<%=params[:controller] %>"
    </script>
    

    因此,在您的 javascript 中,您可以访问变量控制器,它会告诉您您所在的控制器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-11
      • 2023-03-15
      • 2016-06-21
      • 2015-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多