我有部分视图,显示模型特定的flash消息。部分看起来像:Rails - “无法将符号转换为字符串”仅适用于生产
应用/视图/为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
方法简单地取密钥,并检查用于使用简单的regex一个特定前缀。它位于
应用程序/佣工/ mymodelhelper.rb
module MyModelHelper
def myModelFlash(key)
m = /^_mymodel_(.*)/.match(key)
m[1] unless m.nil?
end
end
此作品在我的开发和测试环境完美的罚款。一旦它进入Heroku,我收到一个错误(ActionView :: Template :: Error)“无法将符号转换为字符串”,指向match
的调用。
如果我从视图中删除了对myModelFlash
的调用,并且只显示了键和值,那么在没有错误输出方面工作得很好,所以至少键和值正在进入局部视图中就好了。由于某种原因,助手方法认为传入的键是符号而不是字符串。
有关为什么会发生这种情况的任何想法?
我试过了钥匙。to_s在辅助方法中,但结果字符串为空,并且匹配失败。在将密钥传递给帮助者之前,我会尝试to_s,看看会发生什么。 – 2011-02-09 16:40:26