在ERB中使用JS变量

时间:2015-05-17 02:56:18

标签: javascript jquery ruby-on-rails

我的表格中有一份患者下拉列表:

<%= form_for @assessment do |f| %>
    <div class="form-group text-center">
       <%= f.select :patient, content_tag(:option,'select patient...',:value=>"")+content_tag(:option,'New Patient',:value=>"")+options_from_collection_for_select(@patients, 'id', 'full_name'), :class=>"form-control" %><br />
    </div>    

当选择下拉列表中的患者时,我使用Jquery获取所选患者的ID:

<script>
  $('#assessment_patient').change(function(){
    var e = document.getElementById("assessment_patient");
    var patient_id = (e.options[e.selectedIndex].value)
  });
 </script>

我想在link_to rails helper中传递所述patient_id:

 <%= link_to template.name, {:controller => "assessments", :action => "new", :template_id => template.id, :patient_id => patient_id, :remote=> true }%>

但它不起作用。如何在ERB中使用我的JS变量?或者我可以在link_to中传递Jquery选择器吗?

1 个答案:

答案 0 :(得分:1)

在服务器上解析和处理ERB。您的网页上的JavaScript将在浏览器中解析并执行。当有一个JavaScript值时,ERB处理已经发生。因此,您无法直接在ERB中读取JavaScript值,因为它们尚未存在,因为没有执行任何JavaScript。

如果您尝试将JavaScript值注入DOM中的某个位置,则可以使用JavaScript而不是尝试使用ERB来实现。另一方面,如果您需要服务器上的JavaScript值(例如,如果必须将其用作数据库查询的一部分),则可以尝试通过XHR / AJAX发送它等选项。