Ruby on rails 试图理解:在ruby中,它是如何与此代码保持一致的?

Ruby on rails 试图理解:在ruby中,它是如何与此代码保持一致的?,ruby-on-rails,ruby,ruby-forgery,Ruby On Rails,Ruby,Ruby Forgery,我来自Pyton编程语言,理解并能阅读C/C++。然而,我只在ruby上工作了几个星期,在阅读rails中更复杂的代码时遇到了困难 我看到在ruby中变量后面有很多文档、博客和对“:”的引用,根据我的研究和阅读,这是一个符号。我原以为我理解了这一点的基本概念,但当我通读application\u controller.rb的rails代码时,我感到非常困惑 我正在尝试确定这与此代码的关系。我假设protect_from_forgery with::exception是一个函数,它通过:和:exc

我来自Pyton编程语言,理解并能阅读C/C++。然而,我只在ruby上工作了几个星期,在阅读rails中更复杂的代码时遇到了困难

我看到在ruby中变量后面有很多文档、博客和对“:”的引用,根据我的研究和阅读,这是一个符号。我原以为我理解了这一点的基本概念,但当我通读application\u controller.rb的rails代码时,我感到非常困惑

我正在尝试确定这与此代码的关系。我假设protect_from_forgery with::exception是一个函数,它通过:和:exception传入参数

class ApplicationController < ActionController::Base
    # Prevent CSRF attacks by raisng an exception 
    protect_from_forgery with: :exception
class ApplicationController

我正在阅读有关的文档。并尝试阅读rails教程,但我一直无法理解ruby的sytnax

正如您正确提到的那样,protect from fackery方法采用可选的散列参数。 因此,从本质上讲,它转化为

protect_from_forgery({with: :exception})
您可以在下面的链接中检查该方法的实现


方法参数的括号是可选的。因此,
protect\u from伪冒::exception
与,
protect\u from伪冒::exception
是一样的<代码>防止伪造
接受散列作为参数。在Ruby中,散列可以写成
{:key1=>value1,:key2=value2,…}
{key1:value1,key2:value2,…}
(这里,我使用符号表示键)。因此,该调用与
防止伪造({with::exception})
相同。最后,当以这种方式将has作为参数传递时,Ruby允许您删除括号而不增加歧义,因此:
protect\u from\u forgery with::exception
@lower我认为那里有足够的格式和内容来保证答案,而不是将其塞进注释中:pOr更好(可能):
protect\u from\u forgery with::exception({:with=>:exception})
“有时一个符号有一个前导冒号,有时有一个尾随冒号”部分可能会非常混乱。@muistooshort我仍然讨厌(呃…)新的哈希格式,因为键和值都是符号:/