Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 创建客户Rails查询_Ruby On Rails - Fatal编程技术网

Ruby on rails 创建客户Rails查询

Ruby on rails 创建客户Rails查询,ruby-on-rails,Ruby On Rails,我正在构建一个带有javascript前端的Rails 5.0应用程序。 我想让我的用户在使用前端的表单界面(如过滤)获取项目列表时构建自己的查询 例如: Select Projects WHERE Status IS "pending" AND Title IS NOT "Building". 或 有我可以用的宝石吗?如何在后端使其动态(和安全) 感谢所有的帮助 更新 我想我可能已经找到了一个叫做“洗劫”的解决办法。好吗 如果您正在寻找一种让用户能够搜索项目状态的方法,您可以使用范围。没有太

我正在构建一个带有javascript前端的Rails 5.0应用程序。 我想让我的用户在使用前端的表单界面(如过滤)获取项目列表时构建自己的查询

例如:

Select Projects WHERE Status IS "pending" AND Title IS NOT "Building".

有我可以用的宝石吗?如何在后端使其动态(和安全)

感谢所有的帮助

更新

我想我可能已经找到了一个叫做“洗劫”的解决办法。好吗


如果您正在寻找一种让用户能够搜索项目状态的方法,您可以使用
范围
。没有太多的代码发布,所以我不知道你的控制器和模型叫什么,但我使用了一个项目模型作为例子

在索引操作中添加

def index
  @projects = Project.all
  if params[:search].present?
    @projects = @projects.by_status_and_title(params[:search])
  end
end
在模型中创建范围

#
    scope :by_status_and_title, ->(title_and_stats) { where('title LIKE ? OR status LIKE ?', "%#{title_and_stats}%","%#{title_and_stats}%" ) if title_and_stats.present? }
或者您可以创建单独的作用域

scope :by_status, ->(stats) { where('status LIKE ?', "%#{stats}%") }
scope :by_title, ->(t) { where('title LIKE ?', "%#{t}%") }
在您的视图中,将搜索参数传递给控制器

<%= form_tag(some_path, method: 'get', class: 'form-inline justify-content-center') do %>
  <%= search_field_tag 'search', params[:search], class: 'form-control mb-2 mr-sm-3 mb-sm-0 input-width', placeholder: 'Search'  %>
  <%= submit_tag "Search", class: 'btn btn-primary btn-block-sm-down', :name => nil %>                        
<% end %>

零%>

如果您正在寻找一种让用户能够搜索项目状态的方法,您可以使用
范围
。没有太多的代码发布,所以我不知道你的控制器和模型叫什么,但我使用了一个项目模型作为例子

在索引操作中添加

def index
  @projects = Project.all
  if params[:search].present?
    @projects = @projects.by_status_and_title(params[:search])
  end
end
在模型中创建范围

#
    scope :by_status_and_title, ->(title_and_stats) { where('title LIKE ? OR status LIKE ?', "%#{title_and_stats}%","%#{title_and_stats}%" ) if title_and_stats.present? }
或者您可以创建单独的作用域

scope :by_status, ->(stats) { where('status LIKE ?', "%#{stats}%") }
scope :by_title, ->(t) { where('title LIKE ?', "%#{t}%") }
在您的视图中,将搜索参数传递给控制器

<%= form_tag(some_path, method: 'get', class: 'form-inline justify-content-center') do %>
  <%= search_field_tag 'search', params[:search], class: 'form-control mb-2 mr-sm-3 mb-sm-0 input-width', placeholder: 'Search'  %>
  <%= submit_tag "Search", class: 'btn btn-primary btn-block-sm-down', :name => nil %>                        
<% end %>

零%>

要有这样的内置查询,您可以使用提供许多功能的gem。

要有这样的内置查询,您可以使用提供许多功能的gem。

谢谢!这我可以做没有问题。我想要的是允许用户创建自己的自定义查询,通过表单查询数据库。例如多个选择和布尔值等等。谢谢!这我可以做没有问题。我想要的是允许用户创建自己的自定义查询,通过表单查询数据库。例如,使用多个选择和布尔值等。