Rails-итерация использует метод join для одного атрибута - PullRequest
0 голосов
/ 25 января 2019

Я отправляю почтовую программу клиентам, когда кто-то вводит данные формы, совпадающие с базой данных, и они хотят, чтобы все данные отправлялись им по электронной почте.

Поэтому я решил просто выполнить итерацию скаждый атрибут со следующим:

h1 The customer registration form has been submitted.
-@customer.attributes.each do |k, v|
  ul
    li
      strong #{k.underscore.split('_').join(' ').titleize}:
      ' #{v}

Затем он будет отображать что-то вроде:

ID: 200
First Name:Bill
Last Name:Smith
Email:no@no.com
Business Segments:["Purchasing", "Residential", "Commercial"]

Если я оставлю это как есть, почтовая программа отобразит электронное письмо.Однако всякий раз, когда я пытаюсь # {v.join (',')}, это терпит неудачу.Итак, я проверил это достаточно точно, он работает, потому что есть целые числа. Так как мне применить метод соединения исключительно к атрибуту бизнес-сегментов?

Я пробовал следующее безрезультатно:

-@customer.attributes.each do |k, v|
 ul
   li
     strong =k.underscore.split('_').join(' ').titleize + ': '
     - if k != business_segments
      =v
     - else
      =v.join(', ')

Это несрабатывать правильно.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Я был бы склонен использовать следующее:

ul
  - @customer.attributes.each do |k, v|
    li
      strong = k.titleize + ': '
      = v.is_a?(Array) ? v.join(', ') : v

Пара замечаний:

  • Я вытащил ul вне цикла, поскольку, скорее всего, вы выбираете один список с заполненными им атрибутами

  • titleize должно быть достаточно для преобразования теста без других ваших модификаций

  • В последней строке используется троичная для определения, являются ли данные массивом или иным образом, и представлен текст в соответствии с запросом

Кстати, руководство по стилю Rubocop рекомендует использовать is_a?более kind_of?, и я видел дискуссии, в которых предлагается выбрать is_a? для встроенных классов, таких как Array.Хотя не так много в этом.

Надеюсь, что это полезно, дайте мне знать, если у вас есть какие-либо вопросы / отзывы:)

0 голосов
/ 25 января 2019

is_a?отправил мне путь для поиска по массиву, поэтому я выполнил условие

if v.kind_of?(Array)

Работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...