基于当前 Controller 的 JavaScript If/Else 语句

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

在我的 Rails 应用程序中,我想在“events” Controller 中执行某个 JS block ,并在“movie_interests” Controller 中执行另一个 block 。

我知道可以使用“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 元素。例如,在 EventsController 呈现的页面上,您可以包含 <div class="events"> 。然后您的 JavaScript 代码就可以检查这些元素是否存在。

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

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

然后您可以在 JavaScript 中使用 Controller 名称。

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

关于基于当前 Controller 的 JavaScript If/Else 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27462148/

相关文章:

javascript - 如何使用 Jquery Mobile 从外部文件加载 header

ruby-on-rails - 没有事件记录的文件上传

html - rails : form_for checkbox set to true or false whether the box is checked/unchecked

mysql - rails 2.3 : Replace record associations instead of delete

Ruby 处理数千个异步请求的最佳方式?

javascript - javascript代码不打印

javascript - 在 ASP.NET MVC 中导出 Excel 电子表格

javascript - 使用JavaScript或CSS淡化内容(滚动效果)

ruby-on-rails - CanCanCan:授权/取消授权特定模型属性

ruby-on-rails - 如何将 session 变量从一个 Rails 3.2.8 引擎传递到另一个引擎?