драгоценный камень money-rails не позволяет мне вводить центы в текстовое поле

#ruby-on-rails #money-rails

#ruby-on-rails #money-rails

Вопрос:

У меня возникли проблемы с сохранением значений в моей базе данных с использованием драгоценного камня money-rails. Всякий раз, когда я пытаюсь ввести значение с центами в текстовое поле (т. Е. 20.22), это выдает мне сообщение об ошибке «Пожалуйста, введите допустимое значение.Два ближайших значения — 20 и 21.»

Модель:

 class VideoGame < ActiveRecord::Base

    monetize :loose_price_cents, with_model_currency: :price_currency
    monetize :cib_price_cents, with_model_currency: :price_currency
    monetize :new_price_cents, with_model_currency: :price_currency

end
  

_form.html.erb:

 <%= form_for(@video_game) do |f| %>
  <% if @video_game.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@video_game.errors.count, "error") %> prohibited this video_game from being saved:</h2>

      <ul>
      <% @video_game.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :game %><br>
    <%= f.text_field :game %>
  </div>
  <div class="field">
    <%= f.label :loose_price %><br>
    <%= f.number_field :loose_price %>
  </div>
  <div class="field">
    <%= f.label :cib_price %><br>
    <%= f.number_field :cib_price %>
  </div>
  <div class="field">
    <%= f.label :new_price %><br>
    <%= f.number_field :new_price %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
  

функция обновления контроллера:

 def update
      respond_to do |format|
      if @video_game.update(video_game_params)
        format.html { redirect_to @video_game, notice: 'Video game was successfully updated.' }
        format.json { render :show, status: :ok, location: @video_game }
      else
        format.html { render :edit }
        format.json { render json: @video_game.errors, status: :unprocessable_entity }
      end
    end
  end
  

Я зашел в консоль rails и изменил значения вручную, но, похоже, ошибка основана на значении базы данных (значение db = 2011 центов, ошибка = «Пожалуйста, введите допустимое значение.Два ближайших значения — 20.11 и 21.11.»).

Буду признателен за любой совет!

Редактировать: я понял это. Добавив «шаг: 0.01» в конец метода number_field, это позволяет увеличить значение на .01 вместо 1 по умолчанию. Вместо этого это должно выглядеть так:

 <%= form_for(@video_game) do |f| %>
  <% if @video_game.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@video_game.errors.count, "error") %> prohibited this video_game from being saved:</h2>

      <ul>
      <% @video_game.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :game %><br>
    <%= f.text_field :game %>
  </div>
  <div class="field">
    <%= f.label :loose_price %><br>
    <%= f.number_field :loose_price, step: 0.01 %>
  </div>
  <div class="field">
    <%= f.label :cib_price %><br>
    <%= f.number_field :cib_price, step: 0.01 %>
  </div>
  <div class="field">
    <%= f.label :new_price %><br>
    <%= f.number_field :new_price, step: 0.01 %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>