gpt4 book ai didi

mysql - Rails 使用表单基于多个参数搜索模型

转载 作者:行者123 更新时间:2023-11-30 22:58:53 25 4
gpt4 key购买 nike

所以...我一直致力于为 Rails 应用程序创建搜索表单。我已经看完了 railscast 第 37、111 和 112 集。

虽然带有文本输入字段的简单文本搜索有效。我需要能够定义更多参数来优化搜索。

我发现了一些其他方法,其中一些使用范围...我一直遇到问题,无法在我的应用程序中使用这些方法...

我现在拥有的是在我的家庭索引上定义的一个指向我的 Assets 索引的简单表单:

<% form_tag assets_path, :method => 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= collection_select(:type_id, :type_id, Type.where("type_for = 'asset'"), :id, :name) %>
<%= submit_tag "Search", :search => nil %>
<% end %>

我的 asset.rb 模型:

class Asset < ActiveRecord::Base

has_many :children_assets, :class_name => "Asset"
has_and_belongs_to_many :groups, :join_table => "assets_groups"

belongs_to :parent_asset,
:class_name => "Asset",
:foreign_key => "parent_asset_id"

belongs_to :asset_type,
:class_name => "Type",
:conditions => "type_for = 'asset'"

belongs_to :asset_status,
:class_name => "Status",
:conditions => "status_for = 'asset'"

belongs_to :location
belongs_to :funding_source

has_many :transactions

def self.search(search)
if search
find(:all, :conditions => ['nmc_name LIKE ? AND type_id = ?', "%#{search}%", "%#{search}"])
else
find(:all)
end
end

end

在 asset_controller.rb 中

def index
unless params[:search].nil?
@title = "Assets"
@search = params[:search]
@assets = Asset.search(params[:search]).paginate(page: params[:page], per_page: 25)
else
@title = "Assets"
@assets = Asset.where('').paginate(page: params[:page], per_page: 25)
end

end

我只是不明白我在这里没有看到的是什么。我可以运行类似的 mysql 查询并获得我想要的结果。我只是不知道如何在 rails 中格式化它...

现在任何关于这方面的指导都会很棒。谢谢!

最佳答案

看起来好像您正在尝试搜索特定类型的 Assets ,但是 Asset 模型中的 search 方法仅使用用户提供的一种参数。

根据您使用的表单判断,您的 Controller 将接收参数

params = {
search: 'Search Text',
type_id: 1
}

在你的 Controller 中,你只使用搜索,所以我会改变你的方法来包括这个:

@assets = Asset.search(params[:search], params[:type_id]).paginate(page: params[:page], per_page: 25)

然后修改Assets模型来使用它

def self.search(search, type_id)
if search
find(:all, :conditions => ['nmc_name LIKE ? AND type_id = ?', "%#{search}%", "%#{type_id}"])
else
find(:all)
end
end

关于mysql - Rails 使用表单基于多个参数搜索模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24966452/

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