将轨道参数传递给链接的 js 文件



我有一个带有附加js.erb文件的视图,我试图使用它来自动链接到一些ajax内容。当代码包含在视图页面上时,我已经让代码正常工作:

<script>
$(document).ready(function(){ 
  //auto opening a phase
  <% if params[:phase] %>
    auto_phase = <%= params[:phase] %>;
    //open the specified phase
      var a_id = "phase_" + auto_phase;
      $('a#'+a_id).click();
  <% else %>
    //auto open first phase
      $('a.phase_status_0').first().click(); 
  <% end %>
})
</script>

但是当我将代码移动到通过以下方式链接的 js.erb 文件时:

<% content_for :javascript_includes do %>
  <%= javascript_include_tag "projects.js.erb" %>
<% end %>

我收到以下错误:

undefined local variable or method `params' for #<#<Class:0x299454c>:0x450185c>

有没有一种简单的方法可以让 js.erb 文件从视图的 url 访问参数?(例如:www.site.com/projects/16?phase=18)

谢谢!

javascript_include_tag只允许你包含香草JavaScript文件。

您可能正在寻找的是将代码放入_projects.js.erb然后将其呈现为部分代码:

<% render 'projects.js', :locals => { :project_phase => params[:phase] } %>

然后将 params[:phase] 替换为 js.erb 文件中的:project_phase

旁注:

这一行:

auto_phase = <%= params[:phase] %>;

缺少引号,因此在新文件中如下所示:

auto_phase = "<%= :project_phase %>";

最新更新