jcu*_*nod 5 ruby syntax whitespace
我在这段代码中遇到语法错误
render json: {
"what" => "created",
"whatCreated" => "thing",
"htmlOutput" => render_to_string (partial: "some_partial")
}
Run Code Online (Sandbox Code Playgroud)
但是使用这段代码我不会:
render json: {
"what" => "created",
"whatCreated" => "thing",
"htmlOutput" => render_to_string(partial: "some_partial")
}
Run Code Online (Sandbox Code Playgroud)
怎么来render_to_string打破我的rails应用程序后的那个空间?
Dim*_*ima 12
问题是,ruby中的方法可以使用或不使用括号运行.例如,你可以运行Array.new 1,2并且ruby知道它在空格后接收参数.你也可以运行Array.new(1,2)ruby知道args在括号内.
但是,当你运行时Array.new (1,2),ruby认为它将在空间之后接收参数,但实际上它会收到一个元组(1,2),并且基本上它与Array.new((1,2))
如此底线:
Array.new (1,2)== Array.new((1,2))这就是语法错误,因为(1, 2)文字不是有效的
作为一般的 Ruby 风格指南,您不应在参数列表括号前放置空格。这与 rails 无关,而是与 Ruby 语言有关。尝试以下操作来查看:
Array.new(1,2) # => [2]
Array.new (1,2) # = > SyntaxError: unexpected ',', expecting ')'
Array.new(1) # => [nil]
Array.new (1) # => [nil]
Run Code Online (Sandbox Code Playgroud)
正如您在第二个示例中看到的那样,代码中断了,解释器希望找到 a)但找到了,。但是在最后一个例子中它没有中断。