【问题标题】:Params hash keys as symbols vs strings参数哈希键作为符号与字符串
【发布时间】:2014-02-17 22:36:53
【问题描述】:
<%= params[:action] %>

和

<%= params['action'] %>

显示

index

但是这种语法有什么区别呢?

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    在 Rails 中,params 哈希实际上是 HashWithIndifferentAccess,而不是标准的 ruby​​ Hash 对象。这允许您使用'action' 之类的字符串或:action 之类的符号来访问内容。

    无论您使用什么,您都会得到相同的结果,但请记住,这仅适用于 HashWithIndifferentAccess 对象。

    【讨论】:

    • 如果您需要确定是否给出了参数,请务必使用params.has_key? 而不是params.keys.include?,因为前者将正确返回符号或字符串,但后者将返回 false 符号.
    • 现在方法就是params.key?。
    • “相同的结果”,但在风格/正确性方面比另一个更好?
    • 请注意,since Rails 5 ActionController::Parameters 不再扩展 HashWithIndifferentAccess,尽管您可以通过调用 to_h 或 to_hash 获得一个。 (请参阅this pull request 中的广泛讨论。)
    猜你喜欢
    • 2015-03-16
    • 2012-10-03
    • 2016-06-13
    • 2012-03-31
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多