繁体   English   中英

使用Ajax更新ERB中的Rails变量

[英]Update Rails Variable in ERB using Ajax

我有一个病人下拉菜单。 当用户从下拉菜单中选择患者时,我想使用JQUERY获取该患者的ID,然后对服务器进行AJAX调用,以将该患者作为变量返回我可以在我的视图中使用的变量。

落下:

    <%= f.select :patient_id, content_tag(:option,'select 
patient...',:value=>"")+content_tag(:option,'New 
Patient',:value=>"")+options_from_collection_for_select(@patients, 'id', 
'full_name'), :class=>"form-control" %>

JS:

 $('#assessment_patient_id').change(function(){
var e = document.getElementById("assessment_patient_id");
var patient_id = (e.options[e.selectedIndex].value)

if (patient_id == 0) {
  window.location.href = "/patients/new"
} else {
  $.ajax({
    type: "POST",
    url: "get-patient",
    data: {patient_id: patient_id},
    success: function(data){
      console.log(data)
    },
    error: function(err){
      console.log(err);
    }
  });


}

控制器:

respond_to :js, :html, :json

      def get_patient
        @patient = Patient.find(params[:patient_id])
       respond_with @patient
     end

路线:

  get 'assessments/get-patient', :to => 'assessment#get_patient'

得到-patient.js.erb

$('#assessment-type').slideDown(350);

我真正想要实现的是在用户从下拉列表中选择患者之后 ,能够在我的视图中执行<%= @ Patient.method_name_here%>的功能。

但是我无法弄清楚如何从控制器中将数据作为对象取回。 去哪儿了?

你会做这样的事情。 在视图中,添加一个具有id#patient-name的div(例如)

然后,js.erb文件可以更新dom。

# get-patient.js.erb

$('#assessment-type').slideDown(350);
$('#patient-name').html('#{j(@patient.name)}');

而且,可以将此请求转给Patient_controller#show吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM