2015-01-08 7 views
-1

Я создаю приложения для каталогов уже несколько лет. Это первый раз, когда я получаю сообщение об ошибке, пытающееся открыть представление. Когда я называю мнение (есть только один вид), я получаю следующее сообщение об ошибке:Невозможно вызывать метод «модель» по неопределенному значению в

Невозможно вызвать метод «модель» на неопределенное значение в ....

Следующий фрагмент код используется в 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();
.
.
.
}

+0

Какую модель вы используете? Также вставьте весь код, чтобы мы могли видеть, откуда исходит $ c. –

ответ

1

Опечатка? Возможно, вы имели в виду $c->model в вашей первой строке?

+1

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). –

+1

Да, я понимаю вашу критику. Но я все еще новичок, чтобы не комментировать сообщения других людей. –

+0

@Secator: нет, я подозреваю, что это ответ, даже если он сформулирован как вопрос. – ysth

0

Итак, я понял путь моих злых путей. Я случайно забыл передать $ c в вызывающем методе. Поэтому $ c в myform() не имеет значения. Следовательно, он не смог найти метод 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
.
}