0

尊敬的人...

我对rails真的很陌生,所以我需要你的宝贵帮助......

我的数据库中有一个名为“graph_hospital_vacant_by_band”的数据库视图

mysql> desc graph_hospital_vacant_by_band;
+-------------------+--------------+------+-----+---------+-------+
| Field             | Type         | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+---------+-------+
| specialisation_id | int(11)      | NO   |     | NULL    |       |
| specialisation    | varchar(255) | YES  |     | NULL    |       |
| nos               | bigint(21)   | NO   |     | 0       |       |
| hospitalband      | varchar(255) | NO   |     | NULL    |       |
+-------------------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

其型号为:

class GraphHospitalVacantByBand < ActiveRecord::Base
 self.table_name = 'graph_hospital_vacant_by_band'
end

控制器如下:

class GraphHospitalVacantByBandsController < InheritedResources::Base
end

视图如下:

<table class="table table-bordered">
  <thead>
    <tr>
        <th>Specialisation</th>
              <th>No.</th>
        <th>Hospital Band</th>
    </tr>
  </thead>
<tbody>
<% @graph_hospital_vacant_by_bands.each do |graph_hospital_vacant_by_band| %>
  <tr>
             <td><%= graph_hospital_vacant_by_band.specialisation %></td>
             <td><%= graph_hospital_vacant_by_band.nos %></td>
             <td><%= graph_hospital_vacant_by_band.hospitalband %></td>
  </tr>
<% end %>
</tbody>
</table>

目前显示这个

http://i.stack.imgur.com/v7Jwt.png

我需要一个带有可用专业的下拉列表,以便在选择特定专业时显示该专业的 nos,hospitalband ...

我环顾四周并进行了很多实验,但徒劳无功....

我不知道我应该如何更新我的模型和控制器来处理传递的参数....

非常感谢...

真诚的问候-天空

4

1 回答 1

1

您可以通过使用范围和 where 子句的组合来提供过滤器,但寻找提供此类功能的 gem 可能是最简单的。

两个流行的选项是SqueelRansack。Squeel 增强了您如何使用 ActiveRecord 的内置方法搜索记录。Ransack 使用一个单独的“搜索表单”,您可以使用它来过滤您正在显示的记录。

如果您使用其中任何一个 gem,您将更新控制器,添加搜索/过滤逻辑和视图以添加搜索/过滤选项。

在您的控制器中,您将添加

def index
  @q = GraphHospitalVacantByBand.search(params[:q])
  @graph_hospital_vacant_by_bands = @q.result(:distinct => true)
end

在您看来,您需要添加一个搜索表单:

<%= search_form_for @q do |f| %>
  <%= f.label :specialisation_cont %>
  <%= f.text_field :specialisation_cont %>
  <%= f.label :nos_eq %>
  <%= f.text_field :nos_eq %>
  <%= f.label :hospitalband_cont %>
  <%= f.text_field :hospitalband_cont %>
  <%= f.submit %>
<% end %>

这是一个非常基本的搜索表单,提供接受值的空文本字段。要获得更多润色,您可能希望使用选择并提供可接受的值,但这至少可以帮助您入门。

于 2013-03-14T20:52:36.510 回答