1

ビューに検索フィールドを配置するのに助けが必要です。

家族のテーブルがあり、各家族には0-nの本がありました。特定の本の家族だけが表示されるように検索したい。

現在、他の単純な検索にランサックを使用しています。

コントローラー:

class FamiliesController < ApplicationController
  def index
    @search = Family.search(params[:q])
    @families = @search.result    

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @families }
    end
  end

モデル:

class Family < ActiveRecord::Base
  has_many :names
  has_and_belongs_to_many :books, :join_table => "books_families"
  has_and_belongs_to_many :races, :join_table => "families_races"

  attr_accessible :descr, :nome, :book_ids, :race_ids

  validates :nome, uniqueness: true, presence: true
end

意見:

<fieldset>
  <legend>Filter for families</legend>
  <%= search_form_for @search do |f| %>
    <div class="field">
    <%= f.label :nome, "Name: " %><br />
    <%= f.text_field :nome_cont, :class => "search-field"%>
    </div>
  <div class="actions">
    <%= f.submit "Search" %>
  </div>
  <% end %>
</fieldset>

<table>
  <tr>
    <th><%= sort_link(@search, :nome, "Name") %></th>
    <th>Books</th>
    <th>Descr</th>
  </tr>
(...)
    <td>
      <ol type="disc">
        <% family.books.each do |book| %>
          <li> <%= book.nome %> </li>
        <% end %>
      </ol>
    </td>
(...)

私は何をすべきか?

4

2 に答える 2

0

最後に解決策を得ました。その単純な2行のもの:

  <div class="field">
    <%= f.label :books_id_eq, "Livro:" %><br />
    <%= f.collection_select :books_id_eq, Book.order(:nome), :id, :nome, :include_blank => "Todos" %> 
  </div>
于 2014-01-22T12:09:56.180 に答える
0

私はランサックに精通していませんが、クエリは SQL で達成できるはずです。テーブル/フィールド名をすべて知っているわけではありませんが、このようなものが機能するはずです。

@families = Family.where("families.id IN(SELECT books_families.family_id FROM 
                          books_families WHERE books_families.book_id IN( 
                          SELECT books.id FROM books WHERE books.title LIKE(?)))",
                          "%" + params[:q] + "%")
于 2013-10-03T00:32:40.510 に答える