【发布时间】:2018-10-13 18:09:28
【问题描述】:
我有一个带有管理员用户索引页的网上商店来检查用户信息。在此页面上,我现在想显示送货地址(包括名字、姓氏、街道...)。
我已经设法创建了这个帮助方法来获取名字,方法是使用 user_id,user_id 和 shipping_address 都有:
module Admin::CustomersHelper
def customer(user)
s = ShippingAddress.find_by(id: user)
if s
s.firstname
end
end
end
在我看来,我有:
<%= customer(@user.id) %>
这可行,但问题是我需要显示 10 多个不同的参数,并且必须有比制作 10 个不同的辅助方法更好的方法...
我也尝试过 ,但这会产生错误undefined method `firstname' for nil:NilClass。
我的管理员::CustomersController:
def index
@users = User.all
@shipping_addresses = ShippingAddress.all
end
我的 schema.rb 的一些相关部分:
create_table "shipping_addresses", force: :cascade do |t|
t.string "firstname"
t.string "lastname"
t.string "street"
...etc
t.bigint "user_id"
t.index ["user_id"], name: "index_shipping_addresses_on_user_id"
..etc
add_foreign_key "invoice_addresses", "users"
add_foreign_key "order_items", "orders"
add_foreign_key "order_items", "products"
add_foreign_key "orders", "order_statuses"
add_foreign_key "orders", "users"
add_foreign_key "shipping_addresses", "users"
end
【问题讨论】:
-
使用关联,@user.shipping_address.attribute
-
@user.shipping_address仅在定义了关联时才有效。 -
无需在问题标题前添加文本“SOLVED”。 SO 检测已回答的问题本身。 :)
标签: ruby-on-rails ruby methods helper