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

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

  • 如果referer包含“/ search”,则显示X.
  • 否则显示Y.

控制器:

@referer = URI(request.referer).path 

视图:

  

<%= link_to('<

Tadamm

问题:当有一个引用者,比如“搜索”时,它没问题。 当没有引用时,比如直接访问,我有这个错误:

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

你能帮助我吗?

 @referer = URI(request.referer).path 

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

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

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

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