转: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[0...-1]
- 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>
复制代码 |