Rails方法之——.try

2018-09-27  本文已影响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方法如果定义错误,也会被隐藏,页面会正常显示。

上一篇下一篇

猜你喜欢

热点阅读