Rails 控制器,渲染命令只有在复制时才有效?

Rails controller, render command only works when copied?

我遇到了一个很奇怪的问题。我正在研究示例博客应用程序 (http://guides.rubyonrails.org/getting_started.html)。在 5.10 节中,文章要求修改文章控制器以添加验证。相关部分如下。

def new
  @article = Article.new
end

def create
  @article = Article.new(article_params)

  if @article.save
    redirect_to @article
  else
    render 'new'
  end   

如果我输入这个并保存文件,我得到一个错误:

undefined local variable or method `‘new’' for.....

但是,如果我复制并粘贴文章中的 new,它就可以了!那到底是怎么回事?!我在 Mac 上使用 TextEdit,配置为以 UTF-8 格式保存。 Ruby 版本 2.2.2p95,Rails 版本 4.2.1。其他一切都工作正常。

当我写这个问题时,我将问题中的 new 复制到控制器中,它起作用了。如果我删除它并键入完全相同的文本,它会抛出错误!

我很困惑。

TextEdit 完全不适合编辑代码,它会不断尝试使用完全不适合编程的“智能引号”。

您可以在首选项中禁用它,但您在这里真的是在打一场艰苦的战斗,比如它如何默认为比例字体。

您想要的是一种不会在您书写时将文本假定为人类语言而破坏文本的东西。 TextMate, Sublime Text and Atom都是不错的选择。

还值得注意的是,Xcode 也是一个选项,尽管它通常对于 Ruby 代码来说有点矫枉过正。