2013-03-14 81 views
1

我想在我的Catalyst應用在my_app.pm創建Moose哈希值,這樣我可以在全球訪問/ UNIX的目錄:催化劑全球駝鹿哈希返回MIME類型的httpd

has 'hash' => ( 
    is => 'rw', 
    isa => 'Hashref' 
); 

然而,只要我嘗試添加默認值:

has 'hash' => ( 
    is => 'rw', 
    isa => 'Hashref', 
    default => sub { { 
     'key' => 'val', 
     } 
    }, 
); 

然後我在Chrome開發者工具的控制檯得到這個消息:

​​

每當我嘗試加載頁面。然後我的頁面加載不正確,並嘗試強制我下載一個空文件,每當我加載頁面。在my_app.pm中是否有可能使用Moose哈希默認值?有誰知道我做錯了什麼?謝謝!

+0

也許你的基類已經有一個名稱的字段? – ikegami 2013-03-14 08:19:02

+0

@ikegami不,它不。你認爲如果我使用'__PACKAGE __-> config'而不是'Moose'哈希,這將是一個可接受的工作? – srchulo 2013-03-14 19:31:49

+0

我不明白這個問題(什麼是「駝鹿哈希」?!) – ikegami 2013-03-14 19:36:36

回答

0
  1. 您的應用程序設置方式存在一些問題;當您看到錯誤頁面時,您會看到上述錯誤。

  2. 您的默認設置無效。 sub { 'key' => 'val' }不返回hashref;它會返回兩個項目的列表('key'和'val')。改爲嘗試default => sub { +{ 'key' => 'val' } }

+0

gah,如果您需要消除歧義,請使用'return'而不是'+'! – ikegami 2013-03-14 05:55:33

+0

@hobbs,對不起,我錯誤地將我的默認輸入到了計算器中,但我在我的應用程序中正確輸入了它。 – srchulo 2013-03-14 06:50:14

+0

@hobbs @ikegami我試着將它改爲hobbs建議的,然後我試着用'return'而不是'+',但是我仍然遇到同樣的問題。 – srchulo 2013-03-14 06:52:18

0

所以我想通了,我在做什麼錯了,可惜這是

當定義一個Moose屬性作爲哈希,你必須做的所以那些「衛生署」的時刻:)之一:

has 'hash' => ( 
    is => 'rw', 
    isa => 'HashRef' 
); 

我不小心拼錯HashRef和使用Hashref。感謝所有的幫助! :)