我有一个附加的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中访问params? (例如:www.site.com/projects/16?phase=18)
谢谢!
答案 0 :(得分:1)
javascript_include_tag
只允许您包含vanilla 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 %>";