0

Rails アプリで複数のテーブルを検索する際に問題が発生しており、これにアプローチする最善の方法がわかりません。

トライアル (has_many :results) と結果 (belongs_to :trial) の 2 つのテーブルがあります。これら 2 つのテーブルにヒットし、関連する結果を取得する検索フォームを作成したいと考えています。

'variety_one' と 'variety_two' のデータを、年、灌漑 (0,1,2 整数) および地域に基づいてフォームで比較し、3 列のテーブルにリストします。最初の列は「Variety One」、2 番目の列は「Varety Two」、3 番目の列は前の 2 つの違いです。いえ

結果には列があります:variety_id(:variety_one および :variety_two パラメータに関連する)、年 トライアルには列があります: region_id、灌漑

       | Variety One | Variety Two | Different
Yield  |   5.00      |    4.00     |  1.00
length |   1.00      |    0.50     |  0.50

私の見解

<%= simple_form_for :search, url: vpc_search_path do |f| %>
<%= f.select :variety_one, @variety.collect {|v| [v.variety_name, v.variety_id]}, :selected => '2300', :include_blank => false %>
<%= f.select :variety_two, @variety.collect {|v| [v.variety_name, v.variety_id]}, :selected => '2308', :include_blank => false %>
<%= f.input :irrigated, collection: @irrigations, as: :check_boxes, :input_html => {:checked => true} %>
<%= f.input :years, collection: @years, as: :check_boxes, :input_html => {:checked => true} %>
<%= f.input :regions, collection: @regions, as: :check_boxes, :input_html => {:checked => true} %>
<%= f.button :submit %>
<% end %>

私のコントローラー

class VpcController < ApplicationController
  def index
    all = Result.select(:variety_id)
    @variety = Variety.where(:variety_id => all).order('variety_name DESC')
    @years = Result.select('DISTINCT year').pluck(:year)
    @regions = Trial.select('DISTINCT region_id').pluck(:region_id)
    @irrigations = Trial.select('DISTINCT irrigated').pluck(:irrigated)
  end

  def search
   @result = Result.search(params[:search])
   @trial = Trial.search(params[:search])
  end
end

検索ビュー

<table class="table">
        <th></th>
    <th>Variety One</th>
    <th>Variety Two</th>
    <th>Difference</th>
<tr>
<td>Yield (bales/ha)</td>
<% @result.each do |v| %>
<td><%= "%.2f" % (v.lint) %></td>
<td><%= v.length %></td>
<td><%= ?? %></td>
<td></td>
<td></td>
<% end %>
</tr>
</table>
4

1 に答える 1