Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Datamapper对象在重定向时为零,刷新始终可以正常加载_Ruby_Ruby On Rails 3_Ruby Datamapper - Fatal编程技术网

Ruby Datamapper对象在重定向时为零,刷新始终可以正常加载

Ruby Datamapper对象在重定向时为零,刷新始终可以正常加载,ruby,ruby-on-rails-3,ruby-datamapper,Ruby,Ruby On Rails 3,Ruby Datamapper,我正在开发一个Rails应用程序,它在后台进行一些绘图,以生成各种数据集之间的比较。我看到的是在DataMapper数据库中生成比较对象时偶尔出现500个错误(ActionView::Template::error)。它只在一台机器上有时发生,每次都在另一台机器上发生,而从不在一台机器上发生。这些错误与计算机的性能相关,使我相信DataMapper在幕后做了一些奇怪的事情 我已经放弃了追问“为什么”,现在只是试图捕捉500个错误,并强制刷新以防止评审人员看到问题。然而,我所尝试的一切都没有奏效。

我正在开发一个Rails应用程序,它在后台进行一些绘图,以生成各种数据集之间的比较。我看到的是在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

这将定义在视图中使用的变量,而不考虑参数。

我从未理解控制器中实例变量的持久性有多强。这对我来说是一个非常有趣的行为。很高兴我现在知道了。所有
@
-类型的实例变量都将在视图的上下文中可用。这是从控制器到视图共享数据的主要工具。我以前不清楚的是控制器操作之间的持久性。再次感谢。我从来都不知道控制器中的实例变量的持久性有多强。这对我来说是一个非常有趣的行为。很高兴我现在知道了。所有
@
-类型的实例变量都将在视图的上下文中可用。这是从控制器到视图共享数据的主要工具。我以前不清楚的是控制器操作之间的持久性。再次感谢。