【问题标题】:Search two models with Ransack Parameters使用 Ransack 参数搜索两个模型
【发布时间】: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


【解决方案1】:

您可以使用

访问该值
facility_id = params[:q]['facility_id_eq']
@facility = Facility.find(facility_id)

【讨论】:

    猜你喜欢
    • 2013-05-22
    • 2015-02-15
    • 2017-12-06
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多