这两种方法之间的差异(第4章Michael Hartl教程)

时间:2014-02-06 23:26:06

标签: ruby-on-rails ruby methods railstutorial.org

所以我正在学习这些方法,在part我找到了编写方法的方法,所以我试着重写一下:

module ApplicationHelper

  # Returns the full title on a per-page basis.
  def full_title(page_title)
    base_title = "Ruby on Rails Tutorial Sample App"
    if page_title.empty?
     return base_title
    else
      "#{page_title} | #{base_title}"
    end
  end
end

进入这个

def full_title(page_title)
    base_title = "Ruby on Rails Tutorial Sample App" 
    return base_title if page_title.empty? 
    return "#{page_title} | #{base_title}" 
end

但在最后一种情况下,它在/gems/rspec-core-2.13.1/lib/rspec/core/runner.rb上给了我很多错误,我做错了什么?

1 个答案:

答案 0 :(得分:1)

首先,您正在查看rspec回溯中的错误行。它是在rspec代码中抛出错误的地方,而不是实际导致错误的地方。您应该使用-b选项运行rspec以从代码中获取实际的回溯。

另一种更简单的方法是:

# assuming you pass in nil, not "", so #compact would work
def full_title(page_title = nil)
  ["Ruby on Rails Tutorial Sample App", page_title].compact.join(" | ")
end

替代方式,因此它也处理空白参数:

def full_title(page_title)
  title = ["Ruby on Rails Tutorial Sample App"]
  title << page_title if page_title.present?
  title.join(" | ") 
end

至于原始问题 - 我认为这是你不一致的回归点。