我有多个if
语句。
<% if offer.merchant == 'webgains' %>
<a href="<%= offer.url %>&clickref=<%= current_user.id %>" target="_blank">
<% else %>
<a href="<%= offer.url %>" target="_blank">
<% end %>
<% if offer.merchant == 'rakuten' %>
<h1>WOOP</h1>
<% else %>
<h1>FAIL</h1>
<% end %>
<% if offer.merchant == 'cj' %>
<a href="<%= offer.url %>?sid=<%= current_user.id %>" target="_blank">
<% else %>
<a href="<%= offer.url %>" target="_blank">
<% end %>
<% if offer.merchant == 'aw' %>
<a href="<%= offer.url %>&clickref=<%= current_user.id %>" target="_blank">
<% else %>
<a href="<%= offer.url %>" target="_blank">
<% end %>
有没有办法将它们整合到更干净的代码中并使它们顺利运行?
答案 0 :(得分:3)
在您的帮助文件中,代码可以简化为单个辅助函数:
def merchant_link(merchant, url, user_id)
case merchant
when "webgains", "aw"
"<a href=\"#{url}&clickref=#{user_id}\" target=\"_blank\">".html_safe
when "cj"
"<a href=\"#{url}?sid=#{user_id}\" target=\"_blank\">".html_safe
when "rakuten"
"<h1>WOOP</h1>".html_safe
else
"<h1>FAIL</h1>".html_safe
end
end
然后在视图中调用辅助函数:
<%= merchant_link(offer.merchant, offer.url, current_user.id) %>
您需要重构逻辑,因为if else语句中存在歧义。
这可能不是最佳解决方案(我会使用link_to
来执行完整的<a>
块,而不是仅返回打开的标记。)
答案 1 :(得分:0)
您需要使用if
.. elsif
.. else
.. end
或case
.. when
.. {{ 1}}因为你的条件是在同一个变量上:
end
阅读&#34; Ruby if...else, case, unless&#34;有关条件陈述的更多信息。