有条件地在rails中的url路径中包含参数

时间:2014-07-21 19:57:47

标签: ruby-on-rails ruby

我有一个搜索功能,允许用户搜索项目。从生成的列表中,用户可以将项添加到列表中。从列表中添加项目后,页面将重新加载,用户将返回其当前搜索列表。但是,目前,如果用户没有搜索任何内容,只添加列表顶部的项目(例如,从' A开始),当页面重新加载时,它在网址中包含空白搜索查询。我知道为什么,这是因为这一行

redirect_to admin_job_job_products_path(@job, search_term: params[:search_term])

我想让重定向路径中的最后一个参数成为条件路径,这样,如果说:search_term == nil || == "" || " ",则redirect_to只包含第一个参数。

我最好如何做到这一点?

提前致谢!

2 个答案:

答案 0 :(得分:2)

你可以这样做:

if params[:search_term].present?
  redirect_to admin_job_job_products_path(@job, search_term: params[:search_term])
else
  redirect_to admin_job_job_products_path(@job)  
end

redirect_to admin_job_job_products_path(@job, search_term: params[:search_term].presence)

参考文献:

答案 1 :(得分:1)

MrYoshiji的第二个例子可能不起作用,但你可以简短地写出这个原因:

redirect_to admin_job_job_products_path(@job, search_term: params[:search_term].present? ? params[:search_term] : nil)

因此,如果结果为nil,则rails不会在网址中包含该参数