不幸的是,下面的脚本没有按预期工作,我不知道为什么。目标是根据之前选择的值生成不同的URL。
仅供参考:构建整个网址有 3个不同的基本网址,这是在每个代码块内完成的:
:url
(例如https://test.com):internalurl
(例如https://internal.test.com):cpurl
(例如https://controlpanel.test.com)这是“逻辑”:
customer_id
不可用,则应使用第一个块customer_id
可用且self.tool
是“网站”,则应使用第二个块customer_id
可用且self.tool
是“ControlPanel”,则应使用第三个块这是无法使用的代码:
def url
unique_id = [self.token, self.created_at.strftime('%d%m%y-%H:%M:%S')].join("&")
if self.tool.present? #checks if the order tool is filled out (not necessary as this field is mandatory..)
if self.customer_id.blank? #if the customer id is not filled out, then use the following code..
brandurl = Brand.where(:company => self.brand).pluck(:url)
brandurl = brandurl.shift.strip
self.url = brandurl + "/?utm_campaign=" + unique_id + "&utm_source=" + self.channel1 + "&utm_medium=" + self.channel2 + "&utm_content=" + self.bt.gsub(/\s+/, "") + "&utm_term=" + self.campaign.gsub(/\s+/, "")
elsif self.customer_id.present? && self.tool == "Website" #if the customer id is filled out and the tool is "Website", then use the following code..
brandurl = Brand.where(:company => self.brand).pluck(:internalurl)
brandurl = brandurl.shift.strip
self.url = brandurl + self.customer_id.to_s + "&utm_campaign=" + unique_id + "&utm_source=" + self.channel1 + "&utm_medium=" + self.channel2 + "&utm_content=" + self.bt.gsub(/\s+/, "") + "&utm_term=" + self.campaign.gsub(/\s+/, "")
elsif self.customer_id.present? && self.tool == "ControlPanel" #if the customer id is filled out and the tool is "ControlPanel", then use the following code..
brandurl = Brand.where(:company => self.brand).pluck(:cpurl)
brandurl = brandurl.shift.strip
self.url = brandurl + self.customer_id.to_s + "&utm_campaign=" + unique_id + "&utm_source=" + self.channel1 + "&utm_medium=" + self.channel2 + "&utm_content=" + self.bt.gsub(/\s+/, "") + "&utm_term=" + self.campaign.gsub(/\s+/, "")
end
end
end
不幸的是,代码不起作用。没有错误,它只是没有生成URL。如果我删除了整个if-part,那么就会生成链接。
这是工作代码:
def url
unique_id = [self.token, self.created_at.strftime('%d%m%y-%H:%M:%S')].join("&")
brandurl = Brand.where(:company => self.brand).pluck(:url)
brandurl = brandurl.shift.strip
self.url = brandurl + "/?utm_campaign=" + unique_id + "&utm_source=" + self.channel1 + "&utm_medium=" + self.channel2 + "&utm_content=" + self.bt.gsub(/\s+/, "") + "&utm_term=" + self.campaign.gsub(/\s+/, "")
end
我不知道,因为if-clause应该有效:/
非常感谢提前!
答案 0 :(得分:1)
您已经提出了一个难以回答的问题,因为我们无法运行代码,而且我们可能缺少影响此代码执行方式的上下文。但是假设这种方法之外没有任何东西可以影响正在发生的事情:self.tool
似乎不是"网站"也不是" ControlPanel"因此,没有任何代码块可以运行。
如果不是这种情况(并确保仔细检查字符串),我建议使用ruby调试器在条件上方设置一个断点,然后测试条件的每个元素,看看你是什么&#39 ;失踪。