美文网首页
Rails方法之——.try

Rails方法之——.try

作者: 小小修行者 | 来源:发表于2018-09-27 16:36 被阅读0次
create_table "bank_cards", force: :cascade do |t|
    t.string "number"
    t.string "status"
    t.string "bank_name"
    t.integer "user_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "users", force: :cascade do |t|
    t.string "name"
    t.integer "age"
    t.string "phone"
    t.string "status"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

class User < ApplicationRecord
  has_many :bank_cards
end

class BankCard < ApplicationRecord
  belongs_to :user
end

以上图为例,我们在页面中需要进行如下操作:

<% @users.each do |user| %>
  ...
    <td><%= user.bank_cards.name %></td>
  ...
<% end %>

当bank_cards没有数据,为nil时,页面报错。这里我们就可以用.try方法。可以改为:

<% @users.each do |user| %>
  ...
    <td><%= user.bank_cards.try :name %></td>
  ...
<% end %>

之后,页面不会报错,该部分为空值nil,页面中不予显示。
风险提示:这样做会隐藏方法本身的错误,如此例中,bank_cards方法如果定义错误,也会被隐藏,页面会正常显示。

相关文章

  • Rails方法之——.try

    以上图为例,我们在页面中需要进行如下操作: 当bank_cards没有数据,为nil时,页面报错。这里我们就可以用...

  • Rails方法之——pluck

    以上图为例,在控制台中使用 则会返回 可以看出pluck方法重users表中选了每一条数据的两个字段name和ph...

  • Rails方法之——super

    如上图,super.rb中Plane类继承了Car类。子类调用了父类的相同属性时,可以用super调用父类的属性。

  • Rails方法之——transaction(交易)方法

    transaction方法的使用像这样: 在transaction do中,要求条件 1)和条件2)需要全部生效的...

  • GCD相关基础知识

    原创文章,转载请注明:转自:Try_Try_Try 1.获取Dispatch Queue 的两种方法 方法一: 通...

  • 肖威洞察 | can't activate sqlite

    https://github.com/rails/rails/issues/35387 目前的解决方法是编辑Gem...

  • ruby-Time/Date1

    鉴于前几天没提到的rails中的时间/日期常用方法,补充下面的方法。rails中常用的取时间节点的方法,对于计算天...

  • Python Debug

    常用方法 try...except 方法捕获异常 Python----面向对象---try....except的详...

  • rails:unable to monitor director

    用rails命令时报错 解决方法

  • try、try?、try!的使用方法

    try 的用法必须有捕获异常后的 catch 处理语句 try?的用法不需要捕获异常后的 catch 处理语句 t...

网友评论

      本文标题:Rails方法之——.try

      本文链接:https://www.haomeiwen.com/subject/qmneoftx.html