【问题标题】:rails modle base search with check boxes带有复选框的rails模型库搜索
【发布时间】:2014-05-08 07:06:09
【问题描述】:

我正在研究 Rails 中的搜索功能,我想要一个适用于所有站点的通用搜索方法。为此,我在应用程序控制器中创建了一个方法,其中有两个参数,一个是 modelName,另一个是 fieldsArray。但我做不到。请帮帮我。

我希望我在模型中设置一个变量,我需要像 (attr_accessible) 这样在哪些列上进行搜索,然后我需要一个在视图文件中调用的元素,它会获取所有列带有我在模型中设置的标签和复选框。我得到一个结果,其中包含我在搜索框中输入的特定列名以及我选择了哪些列,列将被多选。

请帮忙。

谢谢

【问题讨论】:

  • 所以用户决定搜索需要触发哪个模型?正如您所提到的,您将 ModelName 作为参数 .. 对吗?
  • 不,我的意思是我在搜索方法中使用modelName,我必须在哪个表上找到搜索结果。
  • 我将传递我使用该方法的模型名称,用户只需选择列并输入他们想要搜索的关键字。假设我在用户控制器中使用该方法,那么该方法将从用户表中获取所有结果,如果我在页面中使用该方法,那么我将传递页面模型名称,以便该方法从页面表中获取记录。
  • 据我了解,您可以使用modelName.constantize 获取模型本身(前提是模型名称正确)。所以你可以做这样的事情params[:modelName].constantize.find("search whatever u want")供进一步参考-apidock.com/rails/String/constantize
  • 如何根据我在模型中声明的模型搜索属性列创建一个元素,这样我就可以在我的项目中的任何地方使用该元素我只是在模型中设置该属性并传递它创建的该元素自动搜索表单。

标签: ruby-on-rails ruby search


【解决方案1】:

希望这会有所帮助:

创建一个具有通用搜索方法的实用程序类。

class Util
  # modelName is a string, fields would be an array of strings, keyword is string as well
  # You could either call fire search from here or from individual models

  def search(modelName, fields, keyword)
    query = ""
    fields.size.each_with_index do |field, index|
      query += "#{field} like #{keyword} "
      query += " OR " if index < fields.size
    end

    modelName.constantize.where(query)
    # Or create search method in all ur models which you want to search and 
    modelName.constantize.search(fields, keyword)

   end
 end

我没有将模型搜索方法包括在内,以说明该方法的外观。

如果这有帮助,请告诉我

【讨论】:

  • 这是控制器,它很好,但我想要带有我在模型搜索属性中定义的文件的通用视图文件,请让我知道我该怎么做。?这对我有很大帮助..
  • 很难理解你的问题,从问题中不清楚你想要什么。可以过来聊聊吗。
猜你喜欢
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 1970-01-01
相关资源
最近更新 更多