actionview :: template :: error(未定义的方法' html_safe'对于nil:NilClass)

时间:2016-02-12 15:10:49

标签: ruby-on-rails ruby redmine redmine-plugins

我是红宝石的初学者,我想为redmine写一个插件。 我写了一个运行的插件,因为我使用' flash [:var]'在我的插件的控制器中。现在,当我想访问我的所有页面时,我收到了一条我不理解的错误消息。

Ruby版本:ruby 1.9.3p484

Rails版本:rails 3.2.19

this is the error message The error message

谢谢你的回答。

编辑:

this is the application_helper

the application_helper

3 个答案:

答案 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)

您似乎遇到了nilflash值的情况。假设您有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放入闪存并且根本不这样做。