Моделью, для которых я сделал валидации являются:проверки рельсов не работает в модели с использованием активного рекорда проверки
class DeliveryTimePerformer < ActiveRecord::Base
belongs_to :delivery_time
belongs_to :performer
validates :amount, numericality: { greater_than: 0 }
end
class ClipCategoryPerformer < ActiveRecord::Base
belongs_to :clip_category
belongs_to :performer
validates :amount, numericality: { greater_than: 0 }
end
class DeliveryTimePerformer < ActiveRecord::Base
belongs_to :delivery_time
belongs_to :performer
validates :amount, numericality: { greater_than: 0 }
end
Это HTML часть.
<label>Categories</label>
<% ClipCategory.all.each do |category| %>
<%= form_tag "update_amount", :remote => :true, :builder => Judge::FormBuilder do %>
<div class="span12">
<div class="category_check pull-left" data-category="category_text_<%= category.id %>">
<%= check_box_tag "category", 1, (@performer.clip_category_ids.include?(category.id) ? "checked" : false), :class => "pull-left" %>
<%= label_tag "category", category.name, :class => "pull-left category_label" %>
</div>
<% amount_val = ClipCategoryPerformer.where("clip_category_id = ? AND performer_id = ?", category.id, current_user.performer.id).first %>
<div id="category_text_<%= category.id%>" class="category_text span10 pull-right">
<% if amount_val %>
<%= number_field_tag "amount", @amount, :class => "pull-left input-medium", :value => amount_val.amount,:validate => true %>
<% else %>
<%= number_field_tag "amount", @amount, :class => "pull-left input-medium", :value => nil,:validate => true %>
<% end %>
<%= hidden_field_tag "category_id", category.id %>
<%= submit_tag "Update" %>
</div>
</div>
<br />
<% end %>
<% end %>
</div>
Это только для ClipCategoryPerformer. Остальные модели имеют одинаковый код на одной странице. Они отправляются через ajax, используя следующий код:
def update_amount
#@ccp = ClipCategoryPerformer.create(:clip_category_id => params[:category], :performer_id => current_user.performer.id, :amount => params[:amount].to_f)
if params[:category] == "1"
puts "checked"
@ccp = ClipCategoryPerformer.create(:clip_category_id => params[:category_id], :performer_id => current_user.performer.id, :amount => params[:amount].to_f)
else
puts "unchecked"
# d = ClipCategoryPerformer.find_by(:clip_category_id == params[:category] && :performer_id == current_user.performer.id)
d = ClipCategoryPerformer.where("clip_category_id = ? AND performer_id = ?", params[:category_id], current_user.performer.id)
d.destroy_all
end
#puts checkbox(category).checked
# rails.logger
respond_to do |format|
format.js { @ccp }
end
end
Валидации не произойдет. Когда я нажимаю кнопку обновления. Он не проверяет, а добавляет значение. Что я делаю не так? Также я попытался использовать драгоценный камень judge. Но я не уверен, что это сработает, поскольку это само по себе не работает. Есть идеи?
я вижу, вы используете 'to_f', может быть, попробовать' проверяет: количество, numericality: {greater_than: 0,0} ' – house9
nope. Это все равно не сработает. Все еще принимает отрицательные значения. – Aravind