Измените входной атрибут формы «имя» на «зашифрованное имя данных» в формах Rails

Изменить атрибут ввода формы "name" на "data-encrypted" -name' обсуждает Django, но этот вопрос касается Rails.

Я создал форму в Rails для обработки платежей по кредитным картам с помощью Braintree. Однако шифрование не работает, потому что Rails добавляет к формам атрибуты имени. Согласно документам Braintree, я хочу заменить атрибуты имени на data-encrypted-name атрибуты. Как мне это сделать?

Этот (вложенный) помощник формы:

<%= cc.text_field :number %>

.. создает следующий элемент:

 <input id="credit_card_number" name="credit_card[number]" size="30" type="text">

Как заменить name на data-encrypted-name?


person am-rails    schedule 15.01.2014    source источник
comment
Все, что начинается с data-, является расширением, зависящим от программиста. Вы, вероятно, получили приложение Django, которое использует JavaScript для шифрования номера кредитной карты и замены имени и значения их зашифрованными версиями перед их отправкой. Я делал кредитные карты раньше, и вам это не нужно. Если вы используете HTTPS и если ваш пользователь осторожен со своим браузером и компьютером, ваши номера в безопасности. Да, также, библиотеки и примеры кода Braintree являются лучшими в бизнесе...   -  person Phlip    schedule 16.01.2014
comment
@Phlip, в документах Braintree говорится, что нужно использовать data-encrypted-name, я просто пытаюсь сделать это в формах Rails. braintreepayments.com/docs/ruby/guide/getting_paid#payment_form   -  person am-rails    schedule 16.01.2014
comment
Как выглядит модель?   -  person Justus Eapen    schedule 16.01.2014
comment
@JustusDannyEapen, технически модели (для транзакций по кредитным картам) нет, но я использую Braintree-Rails-Gem, чтобы как бы притвориться, что есть одна github.com/lyang/braintree-rails   -  person am-rails    schedule 16.01.2014
comment
@Phlip, но Rails по-прежнему создает атрибут имени, помимо атрибута с зашифрованными данными.   -  person am-rails    schedule 16.01.2014
comment
тогда вам нужно ответить @beautifulcoder; чем индивидуальнее ваш HTML, тем меньше вы можете использовать магические теги Rails. Если text_field_tag ​​настаивает на добавлении name="", то просто напишите исходный HTML-код самостоятельно.   -  person Phlip    schedule 16.01.2014


Ответы (2)


Попробуйте text_field_tag лайкнуть

<%= text_field_tag 'credit_card[data-encrypted-name]', size: 30 %>

Вы также можете присвоить значение, например

<%= text_field_tag 'credit_card[data-encrypted-name]', cc.number, size: 30 %>
person beautifulcoder    schedule 15.01.2014

На самом деле ответ Филпа работает. Учитывая документы Braintree, в режиме разработки выполняется следующее:

c.text_field  :number, 'data-encrypted-name' => "number"
person Jerome    schedule 06.02.2014