我有一个简单的搜索表单,在rails 4 app中,需要两个params才能显示相关数据。
我收到'Mysql2 ::错误:未知列'数据输入'但列确实存在。如果我使用'@search = Page.where(params[:one] && params[:two])
'而不是'@search = Page.all
'数据显示,但所有数据都会显示。
表格
<%= form_tag(page_show_path, id: "search-form") do %>
<%= text_field_tag :one, params[:one], placeholder: "One" %>
<%= text_field_tag :two, params[:two], placeholder: "Two" %>
<%= submit_tag "Search", :name => nil %>
<% end %>
模型
def self.one(query)
where("one = ?", "%#{query}%")
end
def self.two(query)
where("two = ?", "%#{query}%")
end
控制器
def show
if (params[:one] && params[:two]).present?
@search = Page.where(params[:one] && params[:two])
else
redirect_to page_path, notice: "Not a valid combination"
end
end
答案 0 :(得分:2)
您可以创建和使用范围。
scope :find_one_two, ->(query_one, query_two) { where("one = ? AND two = ? ", query_one, query_two) }
@search = Page.find_one_two(params[:one], params[:two])
或强>
你可以使用。
@search = Page.where("one = ? AND two = ?", params[:one], params[:two])
答案 1 :(得分:0)
def show
if (params[:one] && params[:two]).present?
@search = Page.where("one like ? AND two like ? ", "%#{params[:one]}%", "%#{params[:two]}%")
else
redirect_to page_path, notice: "Not a valid combination"
end
end
这可以解决您的问题。