如果 Rails 中 object 为 nil,如何跳过一段代码?

发布于 2024-11-19 17:58:02 字数 405 浏览 0 评论 0原文

我有一段代码,可以在单击相应的复选框时启用或禁用选择列表,但是如果它们在发布时全部禁用,则不会将它们发送到参数列表中。所以我只需要在它们存在时执行代码。

我已经使用过:

if params[:id][:id2].nil?

并且

if params[:id][:id2].blank?

更不用说

if params[:id][:id2].empty?

简单地提到:

if params[:id][:id2]

并且都给出了相同的错误......“你有一个 nil 对象,而你没有预料到它。”我该如何修复这个错误?

I have a piece of code that enables or disables selection lists when the appropriate checkbox is clicked, however if they are all disabled on post it will not send these in a the params list. So I need to execute code only if they exist.

I've used:

if params[:id][:id2].nil?

and

if params[:id][:id2].blank?

also

if params[:id][:id2].empty?

not to mention simply:

if params[:id][:id2]

And all give the same error..."You have a nil object where you weren't expecting it." How can I fix this error?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只是偏爱你 2024-11-26 17:58:02

可能 params[:id] 为 nil,请检查 params[:id].nil?

编辑:下面的注释正确地指出,如果您寻求针对 nil?empty? 进行评估,blank? 会更好。代码>.

Probably params[:id] is nil, check for params[:id].nil?.

EDIT: The comments below state correctly that blank? is better if you seek to evaluate against either nil? or empty?.

埋情葬爱 2024-11-26 17:58:02

同时

class Object
  def unless_nil(default = nil, &block)
    if nil?
      default
    else
      block[self]
    end
  end
end

允许这样的事情:

id2 = params[:id].unless_nil { |p_id| p_id[:id2] }
id2, id3 = params[:id].unless_nil([0, 0]) { |p_id| [p_id[:id2], p_id[:id3]] }

Meanwhile

class Object
  def unless_nil(default = nil, &block)
    if nil?
      default
    else
      block[self]
    end
  end
end

allows things like:

id2 = params[:id].unless_nil { |p_id| p_id[:id2] }
id2, id3 = params[:id].unless_nil([0, 0]) { |p_id| [p_id[:id2], p_id[:id3]] }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文