带有redirect_to的条件语句

时间:2014-12-20 18:52:54

标签: ruby-on-rails ruby-on-rails-4

我正在一个网站上工作,该网站为用户提供了两个输入邮政编码作为搜索查询的机会:主页上有输入字段,搜索结果页面中有另一个输入字段选择输入不同的邮政编码。

如果他们通过主页提交的邮政编码与数据库中的任何邮政编码都不匹配,则应将用户重定向回主页。但是,如果他们在搜索结果页面上输入新的邮政编码,那么该页面应该只是重新加载并显示相应的错误消息。我不确定如何编写条件语句来完成 基本上,我需要这些方面的东西:

 #search_controller.rb

   if @postal_code.nil?
      flash[:notice] = "Plans available for residents of Ontario or Alberta, only."
     if current_page?(search_path)
      redirect_to search_path
     else
      redirect_to root_path
     end
    else
    .....

如果我运行该代码,我的heroku日志中会出现此错误: undefined method 'current_page?'

正确的方法是什么?

1 个答案:

答案 0 :(得分:1)

current_page?方法仅在视图中可用。

可能最简单的解决方案是在搜索表单中呈现一个隐藏字段,其中控制器名称为其值:

`<%= hidden_field_tag :source, controller_name %>`

然后在您的控制器中,您只需检查参数值是否与搜索控制器名称匹配:

if params[:source] == controller_name
  redirect_to search_path
end