當我使用'ransack',一個Rails Serving寶石時,我迷路了。Rails的Ransack搜索與check_box相關的模型
我想要做的是工作複選框爲一個asociated模型。
這是我的代碼。
shows_controller.rb
class ShowsController < ApplicationController
def index
@q = Show.search(params[:q])
@shows = @q.result(:distinct => true)
@shows = @shows.joins(:tickets)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @shows }
end
end
index.html.erb
<%= search_form_for @q do |f| %>
<%= f.label "Show's Title: " %>
<%= f.search_field :title_cont %>
<%= f.label "Buy at:" %>
<%= check_box_tag 'q[shows_tickets_store_cont[]]', 'venue' %>At Venue
<%= check_box_tag 'q[shows_tickets_store_cont[]]', 'ticketmaster' %>Ticketmaster
<%= submit_tag "Find Now" %>
<% end %>
<% @shows.each do |show| %>
<%= show.title %> |
<% show.tickets.each do |ticket| %>
<%= ticket.store %><br />
<% end %>
<% end %>
show.rb
class Show < ActiveRecord::Base
has_many :tickets
end
ticket.rb
class Ticket < ActiveRecord::Base
belongs_to :show
end
當我在search_field中寫了一些東西時,選中了「check_box」並點擊「Find Now」按鈕,日誌顯示如下;
Parameters: {"utf8"=>"✓", "q"=>{"title_cont"=>"something", "shows_tickets_store_cont"=>"venue"}, "commit"=>"Find Now"}
Show Load (1.1ms) SELECT DISTINCT `shows`.* FROM `shows` INNER JOIN `tickets` ON `tickets`.`show_id` = `shows`.`id` WHERE (`shows`.`title` LIKE '%something%') LIMIT 25 OFFSET 0
我不知道爲什麼SQL不具有Ticket.store WHERE
條款,儘管收到「shows_tickets_title_cont」 =>「場地」票控制器。
請爲此建議解決方案。
在此先感謝。
我糾正我的錯字。 –
我認識到我應該使用思維獅身人面像或太陽黑子或elasticSearch。 –
我已經更新了我的答案。 – thesis