fields_for, formtastic, ActiveMerchant и ошибки проверки - PullRequest
3 голосов
/ 20 августа 2010

Я пытаюсь использовать Formtastic для создания формы оплаты, поскольку я хотел бы использовать встроенные ошибки.Я использую ActiveMerchant для обработки счетов.У меня есть следующая форма:

<%= semantic_form_for @payment do %>
  <%= form.inputs do %>
    <%= form.input :email, :label => "Email Address" %>

    <%= form.semantic_fields_for :credit_card_attributes do |cc| %>
      <%= cc.input :number, :label => "Credit Card Number" %>  
      <%= cc.input :first_name, :label => "First Name" %>
      <%= cc.input :last_name, :label => "Last Name" %>
      <%= cc.input :month, :label => "Expiration Month" %>
      <%= cc.input :year, :label => "Expiration Year" %>
      <%= cc.input :verification_value, :label => "Verification Code" %>
    <% end %>
  <% end %>
<% end %>

И это то, что есть в моей Payment модели:

class Payment < ActiveRecord::Base
  validates_associated :credit_card, :on => :create

  def credit_card_attributes=(attrs)
    @credit_card = ActiveMerchant::Billing::CreditCard.new(attrs)
  end

  def credit_card
    @credit_card
  end
end

Когда я отправляю недействительную кредитную карту, она обнаруживает, что она недействительна,но я не получаю никаких встроенных ошибок от formtastic.

Я думаю, что, возможно, здесь что-то простое, что мне не хватает, я просто не уверен, что.

Это на Rails3.

1 Ответ

1 голос
/ 28 сентября 2012

Я не уверен, что это то, что вам нужно, но попробуйте добавить этот код (возьмите из gem client_side_validations)

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
  unless html_tag =~ /^<label/
    %{<div class="field_with_errors">#{html_tag}<label for="#{instance.send(:tag_id)}" class="message">#{instance.error_message.first}</label></div>}.html_safe
  else
    %{<div class="field_with_errors">#{html_tag}</div>}.html_safe
  end
end

в каком-то инициализаторе (например, config / initializers / form_errors.rb )

Что касается Formtastic, мне очень не нравится этот драгоценный камень (но это другая история)

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