如果referer =" / search",请执行X,否则执行Y:"错误的参数(预期的URI对象或URI字符串)"

时间:2014-12-15 20:37:08

标签: ruby-on-rails ruby uri

我遇到Ruby和URI的问题。我想测试一下我的推荐人:

  • 如果referer包含" / search",则显示X
  • 否则显示Y

控制器:

@referer = URI(request.referer).path

查看:

<% if (@referer == '/search') %>
    <p><%= link_to('<< Back to results', :back)%></p>
<% else %>
    <p>Tadamm</p>
<% end %>

问题: 如果有一个推荐人,比如&#34;搜索&#34;,那就没关系。当没有引用时,比如直接访问,我有这个错误:

  

错误的参数(预期的URI对象或URI字符串)

你能帮助我吗?

2 个答案:

答案 0 :(得分:3)

@referer = URI(request.referer).path

URI方法需要“URI对象或URI字符串”。但如果没有引用者,那么你就不会给它们任何一个。这相当于调用URI(nil).path。快速解决方法是:

@referer = request.referer && URI(request.referer).path

这样,如果没有引用者,@referer将设置为nil,您的if语句将按预期工作。

答案 1 :(得分:1)

@referer = request.referer ? URI(request.referer).path : nil