中关村村草 发表于 2011-04-11 20:53

Rails的web-app-theme 验证消息显示

转:cxh116

Rails的web-app-theme 验证消息显示



web-app-theme 是一个用于快速开发Rails应用的后台模板.比Django的后台要灵活的多了.

web-app-theme有点小缺点,就是字段验证的消息没有显示的样式,只有FLASH消息显示的样式.

想到一个简单的解决方案,不用修改webp-ap-theme样式,就是把errors添加到flash,通过flash的样式来显示errors消息.

通过eval方法,用到了一点点元编程.一行代码就好了.比JAVA实现简单了N倍,具体请看代码

修改module ApplicationHelper,添加下面方法.

Ruby代码def add_errors_to_flash_now
    model_name = controller_name
    model = nil
    eval("model = @#{model_name}")
    if model.class.method_defined? :errors
      if model.errors.any?
      flash.now[:error] = []
      model.errors.full_messages.each { |msg|
          flash.now[:error] << msg
      }
      end
    end
end修改application.html.erb,把显示flash消息的代码改成如下:

Ruby代码1.<div class="flash">   
2.      <% add_errors_to_flash_now %>   
3.      <% flash.each do |type, message| -%>   
4.          <div class="message <%= type %>">   
5.            <% if message.instance_of? Array %>   
6.                <% message.each do |msg| %>   
7.            <p><%= msg %></p>   
8.                <% end %>   
9.            <% else %>   
10.            <p><%= message %></p>   
11.            <% end %>   
12.          </div>   
13.      <% end -%>   
14.      </div>
页: [1]
查看完整版本: Rails的web-app-theme 验证消息显示