我有一个带有附加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 %>";