2012-04-19 8 views
1

私はクレジットカードのクラスを持っており、バリデーションなどで使用するためにさまざまな属性にsimple_form f.inputメソッドを使用したいと思いますが、model_nameについてエラーが発生しています。これを行う簡単な方法はありますか?単純なRubyクラスでsimple_formを使用するにはどうすればよいですか?

= 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
あなたは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
+0

ありがとうございました!私はRailscastのエピソードを見つけ、それを動作させました。しかし、どのように持続されますか?常に虚偽のものになりますか?私はそれを調べなければならないでしょう。 –

+0

@ EricM。フォームで使用されるHTTP動詞に影響するようです: 'false'は' POST'で、 'true'は' PATCH'になります。少なくとも私はこれまでのところ他の意味合いは見つけていません。 –

関連する問題