2015-01-08 19 views
-1

我一直在构建多年的催化剂应用程序。这是我第一次尝试打开视图时出现错误。当我调用视图(只有一个视图),我收到以下错误:无法在未定义的值处调用方法“model”

无法调用“模式”上的一个未定义的值....

的下面的代码片段代码在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的催化剂应用。 $ c是一个Catalyst对象。在Root.pm文件,$ C收到如下:

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

+0

?请粘贴整个代码,以便我们看到$ c来自哪里。 –

回答

1

错字?你的第一行是否意味着$c->model

+1

这不提供问题的答案。要批评或要求作者澄清,在他们的帖子下留下评论 - 你总是可以评论你自己的帖子,一旦你有足够的[声誉](http://stackoverflow.com/help/whats-reputation),你会能够[评论任何帖子](http://stackoverflow.com/help/privileges/comment)。 –

+1

是的,我了解你的评论。但我还是新手,无法评论其他人的帖子。 –

+0

@Secator:不,我怀疑这是答案,即使是作为一个问题。 – ysth

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) = @_;
.
.
.
​​< ---这是缺少$ C
.
}

您使用的是什么型号
相关问题