ruby - 编写我的块时遇到问题,语法错误?
问题描述
如果您需要我发布其他信息,我会的!但我相信这只是语法?
不确定它是否错了,但我相信它写的正确。
SyntaxError: /Users/cod3/carbuilds/app/controllers/builds_controller.rb:21: syntax error, unexpected else else ^~~~ /Users/cod3/carbuilds/app/controllers/builds_controller.rb:34: syntax error, unexpected end end ^~~ /Users/cod3/carbuilds/app/controllers/builds_controller.rb:94: syntax error, unexpected end-of-input, expecting end
这是我的块代码,它说我有语法错误,但我认为没关系,
如果我错了,请纠正我
class BuildsController < ApplicationController
get '/builds' do
if logged_in?
@builds = Build.all
erb :'builds/index'
else
erb :'users/login' #locals: {message: "Unable to Continue please login"}
end
end
get "/builds/new" do
redirect_if_not_logged_in
@build = Build.new
erb :"/builds/new"
end
post '/builds' do
redirect_if_not_logged_in
if params.values.any? {|value| value == ""}
erb :'builds/new', #locals: {message: "Unable to Continue!"}
else
user = User.find(session[:user_id])
@build = Build.create(title: params[:title], budget: params[:budget], user_id: params[:user.id])
redirect to "/builds/#{@build.id}"
end
end
get 'builds/:id' do
if logged_in?
@build = Build.find(params[:id])
erb :'builds/show'
else
erb :'users/login', #locals: {message: "Access Denied"}
end
end
get 'builds/:id/edit' do
if logged_in?
@build = Build.find(params[:id])
erb :'builds/edit'
else
erb :'users/login' #locals: {message: "Access Denied"}
end
end
patch '/builds/:id' do
if params.values.any? {|value| value == ""}
@build = Build.find(params[:id])
erb :'builds/edit', locals: {message: "You're missing information"}
redirect to "/builds/#{params[:id]}/edit"
else
@build = Build.find(params[:id])
@build.title = params[:title]
@build.budget = params[:budget]
@build.save
redirect to "/builds/#{@build.id}"
end
end
delete '/builds/:id/delete' do
@build = build.find(params[:id])
if session[:user_id]
@build = Build.find(params[:id])
if @build.user_id == session[:user_id]
@build.delete
redirect to '/builds'
else
redirect to '/builds'
end
else
redirect to '/login'
end
end
private
def set_build
@build = build.find_by_id(params[:id])
if @build.nil?
flash[:error] = "Couldn't find a build with id: #{params[:id]}"
redirect "/builds"
end
end
def redirect_if_not_authorized
redirect_if_not_logged_in
if !authorize_build(@build)
flash[:error] = "You don't have permission to do that action"
redirect "/builds"
end
end
end
end
这是我的整个 BuildsController 文件。我正在创建一个构建 CAR BUILD 应用程序,它给了我这些语法错误。如果您有时间,我很乐意与您分享这一切,以便您可以看到我在做什么。这是一个大项目,但到目前为止我只关注语法,所以这是一件好事。
解决方案
- 此行中有一个额外的尾随逗号:
erb :'users/login', #locals: {message: "Access Denied"}
# ^ here
end
您可能在文件末尾有一个太多的关闭s。
您在几个地方有不正确的块缩进。修复它们,完全捕捉/避免这些问题会容易得多。正确设置的编辑器甚至会为您自动进行缩进格式化。
当然,它是“公正”的语法,但语法很重要,因为无效的语法不清楚。计算机不会猜测您的意图是什么,因此这意味着您的代码实际上毫无意义。
例如,数学语法错字使得无法明确解释:
(3 + 2 * 5
该表达可能意味着以下任何一种:
(3) + 2 * 5
- 可能丢失的)
位置(3 + 2) * 5
- 可能丢失的)
位置(3 + 2 * 5)
- 可能丢失的)
位置3 + 2 * 5
- 可能额外(
推荐阅读
- excel - excel中的奇怪回合
- jquery - 如何将jquery ajax中多个字段的多个图像发布到laravel
- java - 在另一个类中创建一个类的对象,UML 类图中的关系是什么?
- matlab - 如何解决“在计算输出时更新持久变量或状态变量,因此它不能用于代数循环......”图表错误
- python - 当 Socket 从一个 Notebook 移动到另一个 Notebook 时,Gtk 会创建新的 XEMBED Socket
- ruby-on-rails - 如何使用 ougai logger 将日志级别从数字更改为日志名称
- oracle - 在 SQL 中按多列排序
- node.js - Heroku 日志中的“服务”时间是什么意思?
- r - 如何避免 shiny.router 更改我的闪亮仪表板(标题和侧边栏)的颜色?
- angular - Spring OKta 需要完全身份验证才能访问 Angular 7 中的登录页面