生成URL /链接

时间:2016-03-30 16:01:42

标签: ruby-on-rails-4

不幸的是,下面的脚本没有按预期工作,我不知道为什么。目标是根据之前选择的值生成不同的URL。

仅供参考:构建整个网址有 3个不同的基本网址,这是在每个代码块内完成的:

这是“逻辑”:

  1. 如果customer_id不可用,则应使用第一个块
  2. 或者:如果customer_id可用且self.tool是“网站”,则应使用第二个块
  3. OR:如果customer_id可用且self.tool是“ControlPanel”,则应使用第三个块
  4. 这是无法使用的代码:

        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应该有效:/

    非常感谢提前!

1 个答案:

答案 0 :(得分:1)

您已经提出了一个难以回答的问题,因为我们无法运行代码,而且我们可能缺少影响此代码执行方式的上下文。但是假设这种方法之外没有任何东西可以影响正在发生的事情:self.tool似乎不是"网站"也不是" ControlPanel"因此,没有任何代码块可以运行。

如果不是这种情况(并确保仔细检查字符串),我建议使用ruby调试器在条件上方设置一个断点,然后测试条件的每个元素,看看你是什么&#39 ;失踪。