1
我在过去曾问过类似问题,但认为我可能错误地回答了问题。根据当前对象ID生成搜索结果
我想知道是否有可能在rails中通过对象的show动作获取当前属性,然后针对该属性执行搜索功能。例如
def show
@recipe = Recipe.find(params[:id])
end
在配方模型有一个属性
:dish_name
这改变这取决于配方我在看,所以说我想列出类似于当前dish_name是食谱显示在显示页面上,我将如何去解决这个问题?只是在正确的方向寻找一些指针。我曾看过solr,但决定坚持搜索功能的快速搜索功能,尽管我无法在ransack中找到实现此目的的方法。有没有人为此类方法编写过类似方法?
BBC食物做同样的事情,如果不一样,我想实现
http://www.bbc.co.uk/food/recipes/easy_chocolate_cake_31070
如果你看看右边你会看到一个名为相关食谱节
任何帮助表示赞赏
谢谢你的回答,所以为了理解这里发生了什么,terms = @ recipe.dish_name.split('')将会拆分正在显示的dish_name,所以每次都会依赖于recipe ID ? – Richlewis
我已经更新了我的答案,因为我意识到你确实不需要为这种类型的东西使用ransack。 –
为了回答你的问题,'split'将'dish_name'作为你所在页面的配方('@ recipe.dish_name'),并将它拆分为空格,所以“italian pasta”变成数组''italian “,”面食“]'。然后它将每个术语都包含在'%'s中,在SQL语言中这意味着“匹配包含这个术语的任何东西”。然后,您可以将其传递给'where'以获取包含任一术语的所有*其他*食谱。 –