Я предпочитаю использовать уникальное значение, например SecureRandom.hex
или __id__
, как указано engineersmnky
, вместо использования идентификаторов моделей. Код будет выглядеть примерно так:
# You may also have to require 'securerandom' within your rails app
# (can't remember if that comes in automatically or not)
<% @services.each do |service| %>
<!-- Either option for random_id works below -->
<% random_id = SecureRandom.hex %>
<% random_id = service.__id__ %>
<div class="card">
<a class="card-b" href="#" data-toggle="modal" data-target="#<%= random_id %>">
</div>
<div class="modal" id="<%= random_id %>" tabindex="-1" role="dialog" aria- hidden="true">
Hello this is the modal.
</div>
<% end %>
Причина, по которой я предпочитаю это, заключается в том, что она не пропускает идентификаторы базы данных (если это то, что вас волнует), и у вас меньше шансов получить конфликты идентификаторов в случае, если этот модал внедряется в другие страницы.
И, учитывая простой скрипт бенчмаркинга, похоже, что __id__
является более производительным из двух вариантов:
$ cat unique_id.test.rb
require 'securerandom'
require 'benchmark'
n = 100_000
Benchmark.bm do |x|
x.report { n.times do |n| ; SecureRandom.hex; end }
x.report { n.times do |n| ; n.__id__ ; end }
end
$ ruby unique_id.test.rb
user system total real
0.180000 0.000000 0.180000 ( 0.176293)
0.000000 0.000000 0.000000 ( 0.005554)