在我的 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/