Ruby Datamapper对象在重定向时为零,刷新始终可以正常加载
我正在开发一个Rails应用程序,它在后台进行一些绘图,以生成各种数据集之间的比较。我看到的是在DataMapper数据库中生成比较对象时偶尔出现500个错误(Ruby Datamapper对象在重定向时为零,刷新始终可以正常加载,ruby,ruby-on-rails-3,ruby-datamapper,Ruby,Ruby On Rails 3,Ruby Datamapper,我正在开发一个Rails应用程序,它在后台进行一些绘图,以生成各种数据集之间的比较。我看到的是在DataMapper数据库中生成比较对象时偶尔出现500个错误(ActionView::Template::error)。它只在一台机器上有时发生,每次都在另一台机器上发生,而从不在一台机器上发生。这些错误与计算机的性能相关,使我相信DataMapper在幕后做了一些奇怪的事情 我已经放弃了追问“为什么”,现在只是试图捕捉500个错误,并强制刷新以防止评审人员看到问题。然而,我所尝试的一切都没有奏效。
ActionView::Template::error
)。它只在一台机器上有时发生,每次都在另一台机器上发生,而从不在一台机器上发生。这些错误与计算机的性能相关,使我相信DataMapper在幕后做了一些奇怪的事情
我已经放弃了追问“为什么”,现在只是试图捕捉500个错误,并强制刷新以防止评审人员看到问题。然而,我所尝试的一切都没有奏效。以下是我的设置:
比较\u controller.rb
这将显示在my production.log文件中:
ActionView::Template::Error (undefined method `first_description' for nil:NilClass):
1: /- @comparison ||= Comparison.get(params[:id])
2: /%h1= "Comparison ##{@comparison.id}"
3: %p <strong>User Description: </strong>
4: <p> Set#1: #{ @comparison.first_description }
5: <p> Set#2: #{@comparison.second_description }
6: <p> #{link_to "Edit", edit_comparison_path(@comparison)}
7: %ul.categories
app/views/comparisons/show.html.haml:4
ActionView::Template::Error(nil:NilClass的未定义方法'first_description':
1:/-@comparison | |=comparison.get(params[:id])
2:/%h1=“Comparison##{@Comparison.id}”
3:%p用户描述:
4:Set#1:#{@comparison.first_description}
5:Set#2:#{@comparison.second_description}
6:{链接到“编辑”,编辑比较路径(@comparison)}
7%ul.categories
app/views/comparations/show.html.haml:4
这个错误困扰了我好几个星期,但并没有屈服于我。关于为什么或如何捕捉错误并强制刷新有什么想法吗
谢谢。您不应该在视图中加载
@comparison
,这是控制器的责任。您还注释掉了实际分配@comparison
的行,因此它的计算结果为nil
也就不足为奇了
请记住,在create
上根本没有:id
参数。这也许可以解释为什么它只在您最终获得该信息时对重定向有效
你的意思可能是:
@comparison = Comparison.new
这将定义在视图中使用的变量,而不考虑参数。您不应该在视图中加载
@comparison
,这是控制器的责任。您还注释掉了实际分配@comparison
的行,因此它的计算结果为nil
也就不足为奇了
请记住,在create
上根本没有:id
参数。这也许可以解释为什么它只在您最终获得该信息时对重定向有效
你的意思可能是:
@comparison = Comparison.new
这将定义在视图中使用的变量,而不考虑参数。我从未理解控制器中实例变量的持久性有多强。这对我来说是一个非常有趣的行为。很高兴我现在知道了。所有
@
-类型的实例变量都将在视图的上下文中可用。这是从控制器到视图共享数据的主要工具。我以前不清楚的是控制器操作之间的持久性。再次感谢。我从来都不知道控制器中的实例变量的持久性有多强。这对我来说是一个非常有趣的行为。很高兴我现在知道了。所有@
-类型的实例变量都将在视图的上下文中可用。这是从控制器到视图共享数据的主要工具。我以前不清楚的是控制器操作之间的持久性。再次感谢。