У меня есть интернет-магазин с индексной страницей администратора для проверки информации о пользователе. На этой странице я хочу показать адрес доставки (с именем, фамилией, улицей ...).
Мне удалось создать этот вспомогательный метод, чтобы получить имя, используя user_id, который имеет и user, и 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 различных вспомогательных методов ...
Я также пытался сделать <% = customer (@ user.id) .firstname%>, но это выдает ошибку неопределенный метод `firstname 'для nil: NilClass .
Мой Admin :: CustomersController:
def index
@users = User.all
@shipping_addresses = ShippingAddress.all
end
Некоторые важные части моей схемы. 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