【发布时间】:2011-02-09 16:21:48
【问题描述】:
我有显示特定于模型的 Flash 消息的局部视图。部分看起来像:
app/views/mymodel/_flashpartial.erb
<% flash.each do |key, value| %>
<% if model_key = myModelFlash(key) then %>
<%= content_tag(:div, value, :class => "flash #{model_key}") %>
<% end %>
<% end %>
myModelFlash 方法只需获取密钥并使用简单的正则表达式检查特定前缀。它位于
app/helpers/mymodelhelper.rb
module MyModelHelper
def myModelFlash( key )
m = /^_mymodel_(.*)/.match(key)
m[1] unless m.nil?
end
end
这在我的开发和测试环境中运行良好。一旦它进入 Heroku,我就会收到一条错误消息,指出 (ActionView::Template::Error) “无法将符号转换为字符串”,指向对 match 的调用。
如果我从视图中删除对myModelFlash 的调用并简单地显示键和值,那么就不会出错而言效果很好,所以至少键和值只是进入部分视图美好的。出于某种原因,辅助方法认为传递给它的键是符号而不是字符串。
关于为什么会发生这种情况的任何想法?
【问题讨论】:
标签: ruby-on-rails regex ruby-on-rails-3 production-environment