我是红宝石的初学者,我想为redmine写一个插件。 我写了一个运行的插件,因为我使用' flash [:var]'在我的插件的控制器中。现在,当我想访问我的所有页面时,我收到了一条我不理解的错误消息。
Ruby版本:ruby 1.9.3p484
Rails版本:rails 3.2.19
谢谢你的回答。
编辑:
答案 0 :(得分:2)
您可以使用NavigatorIOS
方法
nil
转换为string
<强>问题强>
当您尝试在.to_s
值上调用.html_safe
时,会抛出以下错误
nil
例如
NoMethodError: undefined method `html_safe' for nil:NilClass
<强>解决方案强>
您可以使用[8] project_rails » html_content = nil
=> nil
[9] project_rails » html_content.html_safe
NoMethodError: undefined method `html_safe' for nil:NilClass
from (pry):9:in `__pry__'
nil
转换为字符串
例如
.to_s
所以你的代码应该是这样的
[10] project_rails » html_content = nil
=> nil
[11] project_rails » html_content.to_s.html_safe
=> ""
[12] project_rails »
答案 1 :(得分:1)
您似乎遇到了nil
中flash
值的情况。假设您有flash
{ error: nil }
,那么您可以在v.html_safe
中调用content_tag
- 这会导致错误。
您可能希望在调用flash
之前从present?
中提取content_tag
的所有值:
def render_flash_messages
flash.select { |k, v| v.present? }.map do |type, text|
content_tag(:div, text.html_safe, class: "flash #{type}", id: "flash_#{typ}")
end.join
end
答案 2 :(得分:0)
问题是你将var zlib = require('./node-zlib.js');
放入闪存中,这是Redmine的nil
方法无法处理的问题。
更改该方法以处理nil值将起作用,但不是你应该从Redmine插件中做的事情。相反,找出你的插件在哪里以及为什么将render_flash_messages
放入闪存并且根本不这样做。