【发布时间】:2014-10-03 19:56:55
【问题描述】:
我有两个模型:Patient 和 Facility。
创建一个新患者我有一个打开并搜索患者数量的模式。然后,我有 4 个字段可供 usr 填写并搜索特定患者。 Then, when an existing patient is selected some values are passed to a main form.如果未找到患者,数据也会传递到主窗体以根据这些值创建新患者...
我正在使用 Rails 3.2 和 Ransack。下面是一个基本搜索返回的参数示例:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"gT8RPTlPiO6Wf3oLcU5+qSzVOZTjBZyX1Y0qNijT5oo=", "q"=>{"nid_cont"=>"2/14", "province_id_eq"=>"2", "district_id_eq"=>"2", "facility_id_eq"=>"146"}}
然后,在患者控制器上,我有以下代码:
def patient_samples
@search_patients = Patient.includes(:gender, :province, :district, :facility).search(params[:q])
@patients = @search_patients.result
respond_to do |format|
format.html
format.js
format.json { render json: @patients }
end
end
此代码在我打开模式并返回所有现有患者时运行。然后,用户也可以进行只返回相应行的搜索。
当我选择一个现有患者时,我可以从中获取所有值以及所有相关模型,例如:
patient.facility.printer_type
但是当搜索没有找到病人时,我还想从我在搜索参数上选择的设施中搜索打印机类型。
我想做的是访问 q: 值之一,在这种情况下
"facility_id_eq" => "146"
然后执行以下操作:
@facility = Facility.find("146")
@facility.printer_type
但我似乎无法访问该值...我已经在 Stackoverflow 中阅读了很多类似的问题,我已经阅读了 github 上的 gem 文档,我已经尝试了几件事,但是一直没能做到……
我知道这是一个简单的解决方案,但我被阻止了:(
你能帮帮我吗?
【问题讨论】:
-
您是否尝试使用
params[:q]['facility_id_eq']获得该值? -
谢谢,成功了!我试过没有''......这么简单的解决方案......非常感谢,你无法想象我之前尝试过多少东西,呵呵!你能回答我吗?
-
我很高兴能够提供帮助。:) 将其作为答案发布在下面。
标签: ruby-on-rails ruby-on-rails-3.2 ransack