Rails 4 - 如何通过表单填充数组

时间:2015-11-12 21:56:13

标签: ruby-on-rails

我有三个表:疾病,症状和辅助表,用于连接has_many至:relationship的其他两个。

我希望实施一个用户输入症状并收到可能疾病列表的系统。

使用下面的代码我可以使用find(1,2)来显示同时出现症状1和2的所有疾病。但是,我希望这两个常量是用户提供的通过表单提供的数据。我对RoR有些新意,所以我不知道该怎么做。

symptoms = Symptom.find(params[:symptom_ids]) # symptom_ids is an array of ids

illnesses = Illness.joins(illness_symptoms: :symptom)
                    .where("symptoms.id in (?)", symptoms)
                    .group("illnesses.id")
                    .having("count(illnesses.id) >= ?", symptoms.length)

在模型中:

 scope :with_symptoms, -> (symptoms) { joins(illness_symptoms: :symptom)
                                            .where("symptoms.id in (?)", symptoms)
                                            .group("illnesses.id")
                                            .having("count(illnesses.id) >= ?", symptoms.length) }

我将这些用于Illness.with_symptoms(Symptom.find(1,2))(我正在寻找用用户提供的数据替换1,2的方法)。

1 个答案:

答案 0 :(得分:2)

您可以通过以下形式执行此类操作:

<% form_tag some_path do %>
    <% @symptoms.each do |symptom| %>
        <%= label_tag do %>
          <%= check_box_tag "symptom_ids[]", symptom.id %>
          <%= symptom.name %>
        <% end %>
    <% end %>
<% end %>

用户可以使用复选框来选择症状。