Nano Hash - криптовалюты, майнинг, программирование

проблема с именами полей при использовании формы Rails с проверкой формы на стороне клиента Angularjs

Я пытаюсь использовать Angularjs для проверки формы на стороне клиента в моем проекте Rails. Я использую встроенную директиву ng-show для отображения ошибок в полях формы. Код очень прост:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), 
                              html: { novalidate: true, name: 'signUpForm'}) do |f| %>
  ...

  <%= f.email_field :email, :'ng-model'=>'user.email', name: 'uEmail', 
                              autofocus: true, required: true %>
  ...

  <div ng-show="signUpForm.uEmail.$dirty && signUpForm.uEmail.$invalid">
    <span ng-show="signUpForm.uEmail.$error.required">
      <small class="error">Tell us your email.</small>
    </span>
    <span ng-show="signUpForm.uEmail.$error.email">
      <small class="error">This is not a valid email.</small>
    </span>
  </div>
<% end %>

Это дает мне хорошую проверку на стороне клиента, но проблема в том, что Rails по умолчанию дает имя поля формы, такое как model[attr] в моем случае user[email]

Однако здесь я даю своему полю электронной почты имя uEmail, а параметры в почтовом запросе после отправки формы будут uEmail: '[email protected]', которые рельсы не могут понять (по умолчанию Rails ожидает что-то вроде user: { email: '[email protected]' ... })

Я попытался удалить name: 'uEmail' и вернуться к Rails по умолчанию user[email] и использовать что-то подобное в директиве ng-show

<span ng-show="signUpForm.user[email].$error.required">

Но это не сработает, кто-нибудь знает, как с этим обойти?

btw: rails -v 4.0 Angularjs version: 1.0.7


Ответы:


1

Я не знаю, нашли ли вы с тех пор решение этой проблемы, я столкнулся с той же проблемой, я обнаружил, что проблема была открыта на GitHub:

https://github.com/angular/angular.js/issues/1201

Решение довольно простое, в вашем случае вы просто делаете:

<span ng-show="signUpForm['user[email]'].$error.required">
19.09.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..