ruby-on-rails - ruby on rails syntax-变量后的: come before v.什么时候出现?

标签 ruby-on-rails ruby syntax

可能很明显;我是 Rails 的新手。

我的问题:是否有规则或更简单的方法来记住冒号出现在变量之前或之后?这是我在 application_controller 中谈论的示例。

protect_from_forgery with: :exception

我指的是 with::exception

有没有办法记住冒号什么时候出现在末尾,什么时候出现在开头,或者它只是你在逐个变量的基础上记住的东西?还有,为什么两个都在这里连着呢?

我真的很想了解这个:) 谢谢!

最佳答案

with: :exception 只是 :with => :exception 的语法糖

除了方便和减少输入之外,没有任何实际好处。如果您需要继续支持 ruby​​ 1.8,则可以提出这个论点,您应该继续使用旧语法。

您必须在您提供的示例中实现

protect_from_forgery with: :exception

这是一个传递单个变量的方法,该变量恰好是一个散列。所以以下是等价的。

protect_from_forgery with: :exception
protect_from_forgery(with: :exception)
protect_from_forgery(:with => :exception)
protect_from_forgery({:with => :exception})

随着我的前进,我注意到每个人的输入都多了一点,但他们都在做同样的事情。每个都将带有单个键/值对的散列传递给 protect_from_forgery。

回到你原来的左与右问题,记住左边是你的 key ,它是一个符号。

所以下面的例子都是有效的哈希。

foo = {bar: "baz"}
foo = {bar: 1}
foo = {bar: :baz}
foo = {bar: some_object}

然后意识到这是符号键散列到某些事物、符号、数字、字符串、对象等的快捷方式...这可以取代 {:bar => some_thing} 的旧语法

如果您的 key 不是符号,您将需要使用旧语法。

foo = {1 => :bar}
foo = {"string" => some_object}

关于ruby-on-rails - ruby on rails syntax-变量后的: come before v.什么时候出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26262429/

相关文章:

ruby-on-rails - 已安装 Rails 但 rails 命令显示未安装

python - 将必需参数传递给可选参数

ruby-on-rails - Rails 中的 implicit_order_column 和 default_scope 有什么区别?

ruby-on-rails - 如何按天而不是日期分组?

ruby-on-rails - 未找到时将带条件的显示操作限制为 404

java - 有没有办法在 java 中执行 "andand"技术?

ruby-on-rails - 如何将自定义 I18n 标签用于 Devise 的提交按钮

ruby - ObjectSpace.each_object 返回的枚举器是否按对象创建时间排序?

javascript - 有没有办法在底层范围内重用 if(...) 条件的值?

syntax - 四个连续的垂直线是什么意思?