Ruby on rails Rails-未显示验证错误消息

Ruby on rails Rails-未显示验证错误消息,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我的Rails4应用程序中的验证错误消息有问题。他们怎么也没出现。当它们被触发时,只会出现“请查看下面的问题”消息,除此之外,没有错误消息 order.rb=> Class Order < ActiveRecord::Base .... attr_accessor :card_number, :card_verification validate :validate_card, :on => :create private def validate_card

我的Rails4应用程序中的验证错误消息有问题。他们怎么也没出现。当它们被触发时,只会出现“请查看下面的问题”消息,除此之外,没有错误消息

order.rb=>

Class Order < ActiveRecord::Base
  ....
  attr_accessor :card_number, :card_verification
  validate :validate_card, :on => :create

  private

  def validate_card
    unless credit_card.valid?
      credit_card.errors.full_messages.each do |message|
        errors.add(:base, message)
      end
    end
  end
end
def create
  @order = Order.new(order_params)
  @order.ip_address = request.remote_ip
  @order.user_id = current_user.id

  respond_to do |format|
    if @order.save
      if @order.purchase
        format.html { render action: "success", notice: 'Perfect!' }
      else
        format.html { render action: "failure" }
      end
    else
      format.html { render action: 'new' }
    end
  end
end
<%= simple_form_for(@order, html:{class: "well"}, :method => :post) do |f| %>
<%= f.error_notification %>
  <%= f.input :participation_id, collection: Participation.where(user_id: current_user.id), as: :select, label_method: lambda{|x| x.examination.name}, label: 'Choose' %>
  <%= f.input :first_name, label: 'Name' %>
  <%= f.input :last_name, label: 'Surname' %>
  .........
  <%= f.button :submit %>
<% end %>
/orders/new.html.rb=>

Class Order < ActiveRecord::Base
  ....
  attr_accessor :card_number, :card_verification
  validate :validate_card, :on => :create

  private

  def validate_card
    unless credit_card.valid?
      credit_card.errors.full_messages.each do |message|
        errors.add(:base, message)
      end
    end
  end
end
def create
  @order = Order.new(order_params)
  @order.ip_address = request.remote_ip
  @order.user_id = current_user.id

  respond_to do |format|
    if @order.save
      if @order.purchase
        format.html { render action: "success", notice: 'Perfect!' }
      else
        format.html { render action: "failure" }
      end
    else
      format.html { render action: 'new' }
    end
  end
end
<%= simple_form_for(@order, html:{class: "well"}, :method => :post) do |f| %>
<%= f.error_notification %>
  <%= f.input :participation_id, collection: Participation.where(user_id: current_user.id), as: :select, label_method: lambda{|x| x.examination.name}, label: 'Choose' %>
  <%= f.input :first_name, label: 'Name' %>
  <%= f.input :last_name, label: 'Surname' %>
  .........
  <%= f.button :submit %>
<% end %>
:post)do | f |%>
.........
我的代码有什么问题

提前谢谢。

试试这个>>>

 Class Order < ActiveRecord::Base
      ....
      attr_accessor :card_number, :card_verification
      validate :validate_card, :on => :create

      private

      def validate_card
        unless credit_card.valid?           
            errors.add(:credit_card,  "your message")           
        end
      end
 end
类顺序:创建
私有的
def验证卡
除非信用卡有效?
错误。添加(:信用卡,“您的邮件”)
结束
结束
结束

您可以试试这个。这将一次生成一个错误

<% if @order.errors.full_messages.any? %>
  <% @order.errors.full_messages.each do |error_message| %>
    <%= error_message if @order.errors.full_messages.first == error_message %> <br />
  <% end %>
<% end %>



请看一下示例

class Invoice < ActiveRecord::Base
  validate :active_customer, on: :create
 
  def active_customer
    errors.add(:customer_id, "is not active") unless customer.active?
  end
end
class发票

检查此项了解更多详细信息,因为您没有显示错误。请参见验证在视图中的显示方式。哪里定义了错误通知方法?我想我们需要在
错误上添加字段。添加(:field\u name,“message”)
。不是吗?