ruby-on-rails - 等效于哈希的 .try() 以避免 "undefined method"错误?

标签 ruby-on-rails ruby ruby-on-rails-3 hash

<分区>

在 Rails 中,如果值不存在,我们可以执行以下操作以避免错误:

@myvar = @comment.try(:body)

当我深入挖掘哈希并且不想出错时,有什么等价物?

@myvar = session[:comments][@comment.id]["temp_value"] 
# [:comments] may or may not exist here

在上述情况下,session[:comments]try[@comment.id] 不起作用。什么会?

最佳答案

你忘了在 try 之前放一个 .:

@myvar = session[:comments].try(:[], @comment.id)

因为 [] 是您执行 [@comment.id] 时的方法名称。

关于ruby-on-rails - 等效于哈希的 .try() 以避免 "undefined method"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224875/

相关文章:

ruby-on-rails - 使用rails中lib目录中的类函数

ruby-on-rails - 在嵌套对象中搜索太阳黑子

ruby-on-rails - Devise gem 中的 'skip session storage' 是什么意思?

ruby - 巨型 xml 文档的 open-uri 和 sax 解析

ruby-on-rails - 获取 ActiveRecord::StatementInvalid:重命名模型后找不到表

javascript - Node.js 是构建完整网站的好选择吗?

ruby-on-rails - 如何使用 Capistrano gem 为生产数据库播种?

html - Ruby on Rails 多选下拉菜单

javascript - image_tag 与 javascript Rails 项目

ruby-on-rails - 安装 ruby​​-1.9.3-p545 卡住了