无法调用方法"模型"在未定义的值上

时间:2015-01-08 21:49:24

标签: perl catalyst dbix-class moosex-types

我一直在构建多年的催化剂应用程序。这是我第一次尝试打开视图时出错。当我调用视图(只有一个视图)时,我收到以下错误:

无法在....的未定义值上调用方法“模型”

Root.pm中使用了以下代码片段。这是在浏览器上生成错误的原因。同样,这不是我第一次使用这种催化剂方法来调用模型。

my $model = $c->model( 'mypackage' );
my $result = $model->get_my_results();

另一种方法是使用:
use mypackage;
my $model = 'mypackage';
my $results = $model->get_my_results();

以前有没有人见过这个?如果是的话,你能告诉我你是如何解决的。

由于

EDITED
请注意,如原始帖子所示,这是一个Perl Catalyst应用程序。 $ c是一个Catalyst对象。在Root.pm文件中,收到$ c,如下所示:

sub myform :Local {
my ($self, $c) = @_;
my $model = $c->model( 'mypackage' );
my $results = $model->get_my_results();
.
.
.
}

2 个答案:

答案 0 :(得分:1)

错字?你的第一行是$c->model吗?

答案 1 :(得分:0)

所以,我想出了我邪恶之路的道路。我无意中忘记了在调用方法中传递$ c。因此,myform()中的$ c没有任何价值。因此,它找不到名为“model”的Catalyst方法。

sub myform :Local {
my ($self, $c) = @_;
my $model = $c->model( 'mypackage' );
my $results = $model->get_my_results();
.
.
.
}

sub someother_method :Local {
my ($self, $c) = @_;
.
.
.
my $myform_info = $self->myform($c) < ---这错过了$ c
.
}