基于当前控制器的JavaScript If / Else语句

时间:2014-12-13 18:20:55

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

在我的rails应用程序中,我希望在我的“事件”中执行一定程度的JS。控制器,以及我的电影_兴趣'控制器。

我知道可以使用' 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") + '" />' );
    }
});

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是在每个页面上包含唯一的HTML元素。例如,在EventsController呈现的网页上,您可以添加<div class="events">。然后您的JavaScript代码可以检查这些元素的存在。

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

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

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

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

答案 1 :(得分:0)

在application.html.erb中,添加以下代码

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

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