Я працюю Активний адміністратор і я використовую link_to
тому коли я натискаю на користувача, я чомусь потрапляю до цього профілю користувача, а не гіперпосилання, я бачу html.
Я спробував два підходи
Спочатку
row "Users" do
User
.joins(:permissions)
.where(permissions: {admin: true})
.map{|x| link_to(x.email, [:admin, x]).html_safe }
.join(", ")
end
Використовуючи такий підхід, я бачу <a href="/admin/users/171625">email@example.com</a>
а не гіперпосилання
Другий
row "Users" do
User
.joins(:permissions)
.where(permissions: {admin: true})
.map{|x| div (link_to(x.email, [:admin, x])).html_safe}
.join(", ")
end
Використовуючи цей підхід, я бачу наступний браузер Гіперпосилання та сировина html гіперпосилання
Третя
row "Users" do
User
.joins(:permissions)
.where(permissions: {admin: true})
.map do |user|
raw(link_to user.email, admin_user_path(user))
end
.join(", ")
end
Результат: відображається також як html
Я дуже буду вдячний, якщо хтось може сказати мені, що я роблю неправильно. Все, що я хочу, - це прив’язати користувача до його сторінки профілю.
Відповіді:
1 для відповіді № 1Якщо ви використовуєте html_safe або raw (сировинні помічники зателефонують html_safe всередині нього), ви отримаєте екземпляр ActiveSupport::SafeBuffer
, який не буде уникнути під час надання. Але якщо взяти масив ActiveSupport::SafeBuffer
s (як у ваших прикладах) та застосуйте join
до нього ви отримаєте String
екземпляр, який буде уникнути.
Тож вам доведеться подати заявку raw
або html_safe
до отриманого рядка:
row "Users" do
raw(User
.joins(:permissions)
.where(permissions: { admin: true })
.map do |user|
link_to user.email, admin_user_path(user)
end
.join(", "))
end
row "Users" do
(User
.joins(:permissions)
.where(permissions: { admin: true })
.map do |user|
link_to user.email, admin_user_path(user)
end
.join(", ")).html_safe
end
або використовувати safe_join
приєднатися ActiveSupport::SafeBuffer
с:
row "Users" do
safe_join(User
.joins(:permissions)
.where(permissions: { admin: true })
.map do |user|
link_to(user.email, admin_user_path(user)).html_safe
end, ", ")
end