Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActiveRecord::语句在Show Controller中无效_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails ActiveRecord::语句在Show Controller中无效

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

在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 %>
  <%= 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])