0

いくつかのajaxコンテンツへの自動リンクに使用しようとしているjs.erbファイルが添付されたビューがあります。ビューページに含まれている場合、コードは機能しています。

<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方法は、バニラ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 に答える