IRB文档,Rails 4,语法错误,参数,控制台

时间:2016-01-27 03:27:06

标签: ruby-on-rails ruby ruby-on-rails-4 devise irb

我将在一个特定的代码问题中说明我的观点,但我真正担心的是,哪里可以找到一些翻译或更深入解释如何使用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&gt; Account.create!名称:“Cheese”,子域名:“俗气”,{owner_attributes:[email:“email@real.com”,密码:“foobar”,password_confirmation:“foobar”]} SyntaxError:(irb):2:语法错误,意外'\ n',期待=&gt;     来自/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''

2 个答案:

答案 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