Ruby on rails ActiveRecord::语句在Show Controller中无效
在rails 4应用程序中,我有一个简单的搜索表单,需要传递两个参数才能显示相关数据 我得到了一个“Mysql2::Error:Unknown列”data inputed,但这些列确实存在。如果我不使用“Ruby on rails ActiveRecord::语句在Show Controller中无效,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,在rails 4应用程序中,我有一个简单的搜索表单,需要传递两个参数才能显示相关数据 我得到了一个“Mysql2::Error:Unknown列”data inputed,但这些列确实存在。如果我不使用“@search=Page.where(params[:one]&¶ms[:two])”而使用“@search=Page.all”则数据会显示,但所有数据都会显示 表格 <%= form_tag(page_show_path, id: "search-form") do %>
@search=Page.where(params[:one]&¶ms[: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 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
这可能会解决您的问题。您可以创建和使用范围
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])
您的列名是什么?请尝试将“一”更改为“一”。可能这个问题是区分大小写的。这个问题解决了,使用了第二个选项。我发誓我已经试过了。。。哈哈。啤酒时间!
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])