gpt4 book ai didi

ruby-on-rails - Rails 的 Ransack Search,带有关联模型的 check_box

转载 作者:数据小太阳 更新时间:2023-10-29 07:57:00 33 4
gpt4 key购买 nike

我在使用 Rails Serching gem“ransack”时迷路了。

我想做的是为关联模型设置复选框。

这是我的代码。

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 %>

显示.rb

class Show < ActiveRecord::Base
has_many :tickets
end

门票.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 子句,尽管票务 Controller 收到了“shows_tickets_title_cont”=>“venue”。

请为此提出解决方案。

提前致谢。

最佳答案

实际上问题是因为您的第二个键是:shows_tickets_store_con 但应该是 shows_tickets_store_cont。如果它有谓词 _cont,它就接受属性。

搜查文档:

https://github.com/ernie/ransack

cont (contains) and start (starts with) are just two of the available search predicates. See Constants for a full list.

# 已编辑 1

我做了一些调查。

我认为您的方法不适合您的情况。如果所有 checkboxes 都被选中,那么您的元搜索就会出现问题 - 您必须设置另一个 predicate。在您的情况下,它可能在谓词中 - 因为您使用 multiple values (复选框)。

让 SQL 像:

"shows_tickets_store" IN ('venue','something')

可能的谓词:

另请阅读:

关于ruby-on-rails - Rails 的 Ransack Search,带有关联模型的 check_box,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10735595/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com