免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3151 | 回复: 0
打印 上一主题 下一主题

Rails的web-app-theme 验证消息显示 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-11 20:53 |只看该作者 |倒序浏览
转: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代码
  1. def add_errors_to_flash_now
  2.     model_name = controller_name[0...-1]
  3.     model = nil
  4.     eval("model = @#{model_name}")
  5.     if model.class.method_defined? :errors
  6.       if model.errors.any?
  7.         flash.now[:error] = []
  8.         model.errors.full_messages.each { |msg|
  9.           flash.now[:error] << msg
  10.         }
  11.       end
  12.     end
  13.   end
复制代码
修改application.html.erb,把显示flash消息的代码改成如下:

Ruby代码
  1. 1.<div class="flash">   
  2. 2.        <% add_errors_to_flash_now %>   
  3. 3.        <% flash.each do |type, message| -%>   
  4. 4.          <div class="message <%= type %>">   
  5. 5.            <% if message.instance_of? Array %>   
  6. 6.                <% message.each do |msg| %>   
  7. 7.            <p><%= msg %></p>   
  8. 8.                <% end %>   
  9. 9.            <% else %>   
  10. 10.            <p><%= message %></p>   
  11. 11.            <% end %>   
  12. 12.          </div>   
  13. 13.        <% end -%>   
  14. 14.      </div>  
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP