1

我有一个信用卡类,我想在各种属性上使用 simple_form f.input 方法以用于验证等,但我收到有关 model_name 的错误。有没有一种简单的方法可以做到这一点?

= simple_form_for @credit_card, url: join_network_path do |f|
    .payment-errors
  = f.input :card_number
  = f.input :cvc
  = f.input :expiry_month
  = f.input :expiry_year
  = f.submit 'Join Network'
4

1 回答 1

4

您需要符合 ActiveModel API...

有效地:

class CreditCard
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  def initialize(attributes = {})
    attributes.each do |name, value|
      send("#{name}=", value)
    end
  end

  def persisted?
    false
  end
end

一些背景:

  1. http://yehudakatz.com/2010/01/10/activemodel-make-any-ruby-object-feel-like-activerecord/
  2. http://railscasts.com/episodes/219-active-model
于 2012-04-19T15:03:23.567 回答