/ / Rails - замість гіперпосилання з’являється html-активний адміністратор - ruby-on-rails, activeadmin

Rails - замість гіперпосилання з'являється активна адміністративна html - ruby-on-rails, activeadmin

Я працюю Активний адміністратор і я використовую 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::SafeBuffers (як у ваших прикладах) та застосуйте 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