我想为我的数据表制作一些搜索方法。但是我认为在Ruby中使用这个WHERE函数时我不知道一些关键点。如何使用多个WHERE函数指定搜索结果?
# app/controllers/search_controller.rb
def posts
category = params[:searched_category]
name = params[:searched_name]
animals_categorized = Animal.where(animal_category: category)
animals_result = animals_categorized.where(animal_name: name)
end
# app/views/search/posts.html.erb
<% @animals_result.each do |animal| %>
<p><%= animal.weight %></p>
<% end %>
# db/migrate/001_create_animals.rb
t.string :animal_category
t.string :animal_name
t.integer :animal_weight
我的工作几乎是这样的代码。我得到了多个参数(在这种情况下,我写了2,'category'和'name'),然后使用WHERE函数来搜索具有相同'category'和'name'的结果。
但是我有一个像
错误 “的SQLite3 ::的SQLException:没有这样的列:animals.animals_name:选择 ”兽兽 “WHERE ”动物animal_category “IS NULL和” 动物“ * FROM。”“。” “。”animal_name“=''LIMIT 5 OFFSET 0”。
(我用这个“动物”的问题,因为我在我的原代码过于离奇的代码,可以让我困惑问什么......对不起)
我认为这个问题是因为从第一个WHERE函数驱动的结果。我记得“WHERE函数产生'数组'”。所以我认为'animals_categorized'是一个由许多散列组成的数组。 (我的假设)
我能做些什么来解决这个问题?我怎样才能改变第二个WHERE函数,或者你能否建议其他方法可以用多个参数来搜索结果?这将是非常感激,如果你可以建议一些知识,因为我在编程所以新手,我只知道红宝石,Ruby on Rails的....
你能发布完整的错误吗?只是'SQLite3 :: SQLException:没有这样的列'不会帮助任何人在这里了解什么是缺少的。另外,你确定动物表中存在'animal_category'和'animal_name'列吗? – Surya 2014-11-06 13:31:24
你的意思是几乎像这样的代码?您可以将多个参数传递到 – 2014-11-06 13:34:23
谢谢@ User089247。这些列存在于表中。当我使用一个参数,它运作良好,但两个参数使错误... – 2014-11-06 13:48:36