【问题标题】:Rails controller, render command only works when copied?Rails 控制器,渲染命令仅在复制时有效?
【发布时间】:2015-08-03 09:31:39
【问题描述】:

我遇到了一个很奇怪的问题。我正在研究示例博客应用程序 (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   

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

未定义的局部变量或方法 `'new'' for.....

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

当我写这个问题时,我将问题中的new 复制到了控制器中,它可以工作。如果我删除它并输入完全相同的文本,则会引发错误!

我很困惑。

【问题讨论】:

  • 这只是一个猜测,可能是你使用的`类型,你可以尝试使用双引号吗?我主要是在谈论 ` vs '。
  • 或者,使用:new 代替引号。
  • 是的,你的报价是错误的。它在错误消息中这么说。您应该使用',而不是。我建议使用不同的编辑器。一种具有语法突出显示的功能。这样您就可以轻松发现此类错误。

标签: ruby-on-rails ruby render


【解决方案1】:

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

您可以在首选项中禁用此功能,但您在这里确实是在打一场艰苦的战斗,就像它默认为比例字体一样。

您想要的是在您编写时不会因为假定它是人类语言而破坏您的文本的东西。 TextMateSublime TextAtom都是不错的选择。

同样值得注意的是,Xcode 也是一个选项,尽管它对于 Ruby 代码来说通常是多余的。

【讨论】:

  • 而且,FWIW、TextMate 和 Atom 是完全免费的......所以,真的,没有充分的理由不使用它们而不是 TextEdit :)。
  • 非常感谢!我能够立即解决问题。
猜你喜欢
  • 2014-06-27
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 2016-11-16
  • 2016-12-14
  • 2020-05-20
  • 1970-01-01
相关资源
最近更新 更多