0

我在 rails 2 工作,我有一个包含两个模型数据的表单,在一个模型中,我正在验证字段并使用 输入错误self.errors.add_to_base,但这并未在表单上显示错误并成功提交该请求。

这是我的模型验证\

validate :checkPunchingEntries

  def checkPunchingEntries
    if self.punch_in_time.blank? && self.punch_out_time.blank?
      self.errors.add_to_base("Both 'Punch in' and 'Punch out' time can not be blank")
    end
  end

这是我的表格

<% form_tag '/punching_requests/create', :method => :post, :class=>"punching_request_form" do %>
    <% @punching_request.errors.full_messages.each do |msg| %>
        <p class="error"><%=msg%></p>
    <% end %>

    <p>
      <label>Date </label>
      <%= text_field_tag 'date'%>  <%= calendar_for("date") %>
    </p>

    <p>
      <label>&nbsp;</label>
      <input type="checkbox" onclick="punch_in_toggle()">Punch In</input>
      <input type="checkbox" onclick="punch_out_toggle()">Punch Out</input>
    </p>

    <div id="punch_in">
      <p>
        <label>Punch In Time </label>
        <%= text_field_tag 'punch_in_time'%>
      </p>
    </div>

    <div id="punch_out">
      <p>
        <label>Punch Out Time </label>
        <%= text_field_tag 'punch_out_time'%>
      </p>
    </div>

    <p>
      <label>Assign To</label>
      <%= select_tag(:approved_by,  options_from_collection_for_select(@human_resource_persons, "id", "login")) %>
    </p>

    <p>
      <label>Reason </label>
      <%=text_area_tag 'reason'%>
    </p>

    <p class="actions"><label></label><%= submit_tag 'Save' %></p>

<% end %>

它进入验证,但验证失败时不显示错误。

4

3 回答 3

0

您是否尝试过 IRB 控制台?如果没有,请查看那里发生了什么,以确保其中@punching_request.errors包含某些内容。

于 2012-11-05T07:30:25.203 回答
0

在此您正在使用生成表单form_tag,并且您期望的错误将存储在表单构建器中,form_for.

而不是form_tag使用form_for(@punching_request). 这应该可以解决问题。

于 2012-11-05T07:43:51.933 回答
0

尝试这个

def checkPunchingEntries
  if self.punch_in_time.blank? && self.punch_out_time.blank?
    errors[:base]<< "Both 'Punch in' and 'Punch out' time can not be blank"
  end
end

并使用form_for@punching_request

例如

# in your controller
def new
  @punching_request = PunchingRequest.new
end
def create
  ...
  ...
end

你的表格看起来像你的new.html.erb

form_for(@punching_request)
  ...
  ...
end
于 2012-11-05T07:49:50.687 回答