我对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