【问题标题】:SyntaxError in ArticlesController#create on Ruby on RailsRuby on Rails 上 ArticlesController#create 中的语法错误
【发布时间】:2015-07-20 16:10:00
【问题描述】:

我在处理这段代码时遇到了一些问题。其实很简单,但我找不到问题。该页面昨天还在工作,但现在向我抛出了一个

“ArticlesController 中的语法错误#new”

“/home/peyu/workspace/blog01/app/controllers/articles_controller.rb:30:语法错误,意外的keyword_end,期待输入结束”

我想我错过了“结束”之类的东西,但我找不到它。这是代码

class ArticlesController < ApplicationController

  def index
    @articles = Article.all
  end


  def show
    @article = Article.find(params[:id])
  end

  def new
    @article = Article.new
  end

  def create
    @article = Article.new(article_params)

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

  end

  private
    def article_params
      params.require(:article).permit(:title, :text)
    end

end

所以...知道我的错误在哪里吗?提前谢谢!

这是控制台输出:

在 2015-05-10 06:34:10 -0300 开始为 127.0.0.1 获取“/articles/new” ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations" /home/peyu/workspace/blog01/app/controllers/articles_controller.rb:22:警告:否则没有救援是没用的

SyntaxError(/home/peyu/workspace/blog01/app/controllers/articles_controller.rb:30:语法错误,意外的keyword_end,预期输入结束): app/controllers/articles_controller.rb:30:语法错误,意外的keyword_end,期待输入结束

渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (4.8ms) 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.2ms) 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (10.6ms) 在救援/布局中渲染/home/peyu/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb (31.6ms) 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/_markup.html.erb (0.6ms) 在 layouts/inlined_string (0.4ms) 内渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/style.css.erb 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/_inner_console_markup.html.erb 在 layouts/inlined_string (0.3ms) 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/_prompt_box_markup.html.erb 在 layouts/inlined_string (0.3ms) 在 layouts/javascript (15.3ms) 中渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/console.js.erb 在 layouts/javascript (0.4ms) 中渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/main.js.erb 在 layouts/javascript (0.6ms) 中渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/error_page.js.erb 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/index.html.erb (34.2ms)

在 2015-05-10 06:34:10 -0300 开始为 127.0.0.1 获取“/articles/new” /home/peyu/workspace/blog01/app/controllers/articles_controller.rb:22:警告:否则没有救援是没用的

SyntaxError(/home/peyu/workspace/blog01/app/controllers/articles_controller.rb:30:语法错误,意外的keyword_end,预期输入结束): app/controllers/articles_controller.rb:30:语法错误,意外的keyword_end,期待输入结束

渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (4.6ms) 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.2ms) 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.4ms) 在救援/布局中渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb (21.1ms) 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/_markup.html.erb (1.1ms) 在 layouts/inlined_string (0.4ms) 内渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/style.css.erb 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/_inner_console_markup.html.erb 在 layouts/inlined_string (0.3ms) 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/_prompt_box_markup.html.erb 在 layouts/inlined_string (0.3ms) 在 layouts/javascript (15.7ms) 中渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/console.js.erb 在 layouts/javascript (0.3ms) 内渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/main.js.erb 在 layouts/javascript (0.4ms) 中渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/error_page.js.erb 渲染 /home/peyu/.rvm/gems/ruby-2.2.1/gems/web-console-2.1.2/lib/web_console/templates/index.html.erb (31.9ms)

【问题讨论】:

  • 您是否对读取工作超时和停止之间的任何代码进行了任何更改?
  • 另外,在你的编辑器中,第 30 行是哪一行?
  • 有最后一个“结束”语句。第 30 行是最后一行...
  • 您确定您之前没有意外保存错误,而现在您已经修复了它,您还没有保存文档?
  • 你能显示从请求到错误的 Web 控制台输出吗?

标签: ruby-on-rails


【解决方案1】:

您可以像这样验证您的 Ruby 文件

ruby -carticles_controller.rb

我试过了,没问题。您可以从articles_controller.rb 复制并粘贴确切的文件内容吗?您使用的是哪个 Ruby 版本?

【讨论】:

  • article_controller.rb 就是上面那个。我复制并粘贴它,我唯一更改的是易于阅读的标识。
  • 我尝试了 ruby​​ -carticles_controller.rb 并且得到了这个:“警告:否则没有救援是无用的”和“语法错误,意外的关键字_end,期待输入结束”有什么建议吗?我正在使用 ruby​​ 2.2.1p85
  • 你能在另一个 Ruby 版本上试试吗?您还可以提供有关您使用的编辑器和操作系统的信息吗?您的代码在我的机器上成功通过。
  • 我会尝试另一个版本...奇怪的是两天前它还在工作...我不明白发生了什么,我没有改变任何东西。 ruby 2.2.1 Rails 4.2.1 在 ubuntu 上。我使用 Aptana RadRails 并在没有 Aptana 的情况下尝试它,使用 sublime 和控制台......仍然是相同的结果......
  • 没关系..我不知道为什么,但我在 Rails 上重新安装了 ruby​​,现在可以正常工作了。我想我以某种方式把东西弄乱了。谢谢所有帮助过我的人!!你太棒了!
【解决方案2】:

fyi,private 关键字不需要结尾,所以正确的缩进应该是

private

def article_params
  params.require(:article).permit(:title, :text)
end

除此之外,代码看起来还不错。你检查过模板的代码吗? (可能类似于 new.html.erb)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2011-04-11
    相关资源
    最近更新 更多