我将在一个特定的代码问题中说明我的观点,但我真正担心的是,哪里可以找到一些翻译或更深入解释如何使用IRB以及错误含义的良好解释?
我在控制台中遇到的错误:
SyntaxError:(irb):10:语法错误,意外'\ n',期待=>
我对铁轨没有经验,但我想我明白这说的是什么。让我试试:
“语法错误,行意外结束,期待哈希火箭”我认为这意味着当我创建新帐户和用户/所有者时,我没有正确地说出我的参数。
我正在尝试创建一个新帐户并同时添加所有者属性,因为它应该在我的应用中运行。以下是与我的问题相关的AccountController代码:
def create
@account = Account.new(account_params)
if @account.save
sign_in(@account.owner)
flash[:notice] = "Your account has been successfully created."
redirect_to root_url(subdomain: @account.subdomain)
else
flash.now[:alert] = "Sorry, your account could not be created."
render :new
end
end
还有AccountController中的参数:
private
def account_params
params.require(:account).permit(:name, :subdomain,
{ owner_attributes: [ :email, :password, :password_confirmation
]}
)
end
这是我进入控制台的方式:
Account.create! name: "Cheese", subdomain: "cheesy", { owner_attributes: [ email: "email@real.com", password: "foobar", password_confirmation: "foobar" ]}
用户由Devise制作,以防在这种情况下发生。
坦率地说,即使我已经正确地翻译了这个,我可能没有,我是否在原始代码或控制台中出错了?但回到我原来的问题,哪里有一个很好的资源来弄清楚IRB错误告诉我什么?如果我谷歌这个错误,结果只与我的关注远程相关。更具体地说,Google似乎将\ n视为“n”和=>没什么。
以下是完整的控制台记录:
2.1.5:002> Account.create!名称:“Cheese”,子域名:“俗气”,{owner_attributes:[email:“email@real.com”,密码:“foobar”,password_confirmation:“foobar”]}
SyntaxError:(irb):2:语法错误,意外'\ n',期待=>
来自/home/reed/.gem/ruby/2.1.5/gems/railties-4.2.2/lib/rails/commands/console.rb:110:in start'
from /home/reed/.gem/ruby/2.1.5/gems/railties-4.2.2/lib/rails/commands/console.rb:9:in
start'
来自/home/reed/.gem/ruby/2.1.5/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:68:in console'
from /home/reed/.gem/ruby/2.1.5/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:39:in
run_command!'
来自/home/reed/.gem/ruby/2.1.5/gems/railties-4.2.2/lib/rails/commands.rb:17:in <top (required)>'
from bin/rails:9:in
require'
来自bin / rails:9:in''
答案 0 :(得分:0)
[ email: "email@real.com", password: "foobar", password_confirmation: "foobar" ]
是一个包含哈希的数组。
内部哈希需要花括号。
答案 1 :(得分:0)
来自fylooi的回应是正确的:
啊,我错过了早先的哈希。试试创造!名称:“奶酪”,子域名:“cheesy”,owner_attributes:{email:“email@real.com”,密码:“foobar”,password_confirmation:“foobar”} - fylooi
谢谢fylooi