2016-04-09 15 views
0

レールアプリで価格と通貨の選択を追加する方法については、このチュートリアルのhttp://pauldeardorff.com/2013/08/14/handling-currencies-in-ruby-on-rails-apps/に従っています。レールアプリの価格と通貨の扱い

私は正確に簡単なチュートリアル

ように私のモジュールを設定しているスターターアプリでは私の問題は、私が最初に私の製品クラスのための新しいアクションをレンダリングするときに到着するようです。このチュートリアルでは、rails Libフォルダ内にmoney_attributesファイルを作成することを推奨しています。

# lib/money_attributes.rb 
module MoneyAttributes 
    extend ActiveSupport::Concern 
    module ClassMethods 
    def money_attributes *args  
     args.each do |attribute| 
     cents_attribute = "#{attribute}_in_cents" 
     define_method attribute do 
      send(cents_attribute).try("/", 100.0) 
     end 

     define_method "#{attribute}=" do |value| 
      value.gsub!(/[^\d.]/,"") if value.is_a? String   
      send("#{cents_attribute}=", value.try(:to_f).try("*", 100)) 
     end 

     define_method "#{attribute}_money" do         
      Money.new(send("#{attribute}_in_cents").to_f || 0,send("currency")).format 
     end 

     attr_accessible attribute if accessible_attributes.include?(cents_attribute) 
     end 
    end 
    end 
end 

私のアプリは未定義のローカル変数またはメソッド `accessible_attributes 'を吐き出します。

「accessible_attributes」がレール4で廃止されたため、私は何が間違っているのか考えています。私の問題は、私がこの方法をどのように修正するか分かりません。また、私のコントロールの強力なパラメータは、誰もがこの問題を解決する方法についてのアイデアを持っている場合、私はそれを大幅に感謝しますか持っているかもしれません......

 products_controller.rb 

を以下のよう プライベート

def product_params 
     params.require(:product).permit(:price, :currency) 
    end 

に見えますチュートリアルと一致するより良い方法を念頭に置いてください。私の問題は、私のモデルのフォーム内で価格と通貨の選択を別々にしたいということです。このチュートリアルで指定したのとまったく同じです。どんな助けでも大歓迎です。

答えて

0

属性の保護がコントローラで実行されました(実装済みの強力なパラメータを使用)ので、attr_accessible attribute if accessible_attributes.include?(cents_attribute)行を削除できます。