Mojolicious路线不起作用

use*_*668 3 perl mojolicious

我正在浏览文档 http://mojolicio.us/perldoc/Mojolicious/Lite

我将示例粘贴在教程中,并且几乎总是收到此错误消息:

找不到页面...!

我尝试的最后一个示例是:

use Mojolicious::Lite;

  get '/with_layout';

  app->start;
  __DATA__

  @@ with_layout.html.ep
  % title 'Green';
  % layout 'green';
  Hello World!

  @@ layouts/green.html.ep
  <!DOCTYPE html>
  <html>
    <head><title><%= title %></title></head>
    <body><%= content %></body>
  </html>
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

[Thu Nov 14 03:43:15 2013] [debug] GET "/with_layout".
[Thu Nov 14 03:43:15 2013] [debug] Template "with_layout.html.ep" not found.
[Thu Nov 14 03:43:15 2013] [debug] Template "not_found.development.html.ep" not found.
[Thu Nov 14 03:43:15 2013] [debug] Template "not_found.html.ep" not found.
[Thu Nov 14 03:43:15 2013] [debug] Rendering cached inline template.
[Thu Nov 14 03:43:15 2013] [debug] Rendering cached inline template.
[Thu Nov 14 03:43:15 2013] [debug] 404 Not Found (0.011649s, 85.844/s).
Run Code Online (Sandbox Code Playgroud)

Ale*_*ape 5

您错过了定义路线的子程序吗?

从文档中,您可以得到:

use Mojolicious::Lite;

# Route leading to an action that renders a template
get '/with_layout' => sub {
    my $self = shift;
    $self->render('foo');
};

app->start;
__DATA__

@@ with_layout.html.ep
<!DOCTYPE html>
<html>
  <head><title><%= title %></title></head>
  <body><%= content %></body>
</html>
Run Code Online (Sandbox Code Playgroud)

更好的是:

get '/with_layout' => sub {
    my $self = shift;
    $self->render(template => 'with_layout', format => 'html', handler => 'ep');
    return;
};
Run Code Online (Sandbox Code Playgroud)

现在的错误:

Template "not_found.development.html.ep" not found.
Template "not_found.html.ep" not found.
Run Code Online (Sandbox Code Playgroud)

您可以在模板目录中创建这些文件

/lite_app.pl
/templates/not_found.development.html.ep
/templates/not_found.html.ep
Run Code Online (Sandbox Code Playgroud)