我试图使用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 %>
这就是我的模型:
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得到任何内联错误。
我想可能是我遗漏了一些简单的东西,我只是不确定是什么。
在轨道3上。
最佳答案
我不确定这是你想要的,但是试着添加这个代码(从客户端获取验证gem)
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,我真的不喜欢这个宝石(但那是另一个故事)
关于ruby-on-rails - fields_for,formtastic,ActiveMerchant和验证错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3534128/