0

我有一个附加的 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)

谢谢!

4

1 回答 1

1

javascript_include_tag唯一允许您包含 vanilla JavaScript 文件。

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

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

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

边注:

这一行:

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

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

auto_phase = "<%= :project_phase %>";
于 2012-11-27T15:07:43.147 回答