Gem do Money-Rails com rails 4 – Moedas de Instância

Estou tentando usar o monetise no meu aplicativo Rails 4 (com gem money-rails).

Como você permite que um usuário envie apenas um número de dólares? Quando eu digito 100, recebo $ 1 em vez de $ 100.

No meu modelo, tenho:

monetize :participation_cost_pennies, with_model_currency: :participation_cost_currency 

Estou usando moedas de instância para que os usuários selecionem a moeda relevante. Minha tabela tem colunas para o custo de participação, tostões de custo de participação e moeda de custo de participação.

Na minha forma, tenho:

    {:style => 'width: 250px; margin-top: 20px', class: 'response-project'} %> 

Na minha opinião, eu tenho:

   

Substituindo ‘tostões de custo de participação’ com o custo de participação na forma, recebo o número para mostrar como um número inteiro sem centavos. Agora recebo $ 10.000 quando entro em 100 (assim, o problema reverso é adicionar 2 00s ao final de minha input.

Parece que você usa price coluna de price dentro do database e pede aos usuários que insiram exatamente a mesma input. Estes dois setters / getters diferentes. Tente o seguinte:

 # add migration rename_column :products, :price, :price_cents # set monetize for this field inside the model class Product monetize :price_cents end # inside form use .price instead of .price_cents method f.text_field :price 

Nesse caso, defina o preço do usuário em dólares e ele será convertido automaticamente para os centavos para armazená-lo dentro do campo price_cents .

Na gema money-rails os preços são economizados em centavos , então é normal que 100 saques $ 1, já que são 100 centavos. US $ 100 seria 10000. Isso é feito de propósito, para evitar erros de arredondamento de ponto flutuante .

Você pode escrever uma function auxiliar para converter sua input em centavos, se quiser lidar com dólares em seu aplicativo.

Supondo que você tenha a coluna price_cents na sua tabela. Você pode tentar este código para converter a quantia em dólar para centavos antes de monitizar:

 monetize :price_cents before_save :dollars_to_cents def dollars_to_cents #convert dollar to cents self.price_cents = self.price_cents * 100 end 
Intereting Posts