如果引用者 = "/search" ,则执行 X,否则执行 Y: "bad argument (expected URI object or URI string)"



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

  • 如果引用包含"/搜索",则显示 X
  • 否则显示 Y

控制器:

@referer = URI(request.referer).path

视图:

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

问题:当有推荐人时,比如"搜索",没关系。当没有引用器时,例如直接访问,我有此错误:

错误的参数(预期的 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

最新更新