2013-01-24 26 views
2

我已經添加到了我的Boot.scala電梯 - 摘錄失敗找不到方法

LiftRules.viewDispatch.append({ 
    case List("admin", "categories") => Right(Admin) 
}) 

這是我在Admin.scala(管理/查看包)

object Admin extends LiftView{ 

    def dispatch = { 
    case "add" => editCategory 
    } 

    def editCategory(): NodeSeq = { 
    <lift:embed what="/admin/add_category"></lift:embed> 
    } 
} 

這裏是我的add_category模板 -

<lift:surround with="admin" at="content"> 
    <div class="container-fluid" id="main_container"> 
    <lift:Admin:addCategory form="POST" class="form-horizontal"> 
     <fieldset> 
     <legend>Add Category</legend> 
     <div class="control-group"> 
      <label class="control-label" for="cat_name">Name</label> 
      <div class="controls"> 
      <cat:name></cat:name> 
      </div> 
     </div> 
     <div class="control-group"> 
      <label class="control-label" for="cat_desc">Description</label> 
      <div class="controls"> 
      <cat:desc></cat:desc> 
      <cat:submit></cat:submit> 
      </div> 
     </div> 
     </fieldset> 
    </lift:Admin:addCategory> 
    </div> 
</lift:surround> 

我試圖用一個片段-Admin.scala在(管理/段封裝),addCategory結合本 方法。

object name extends RequestVar("") 
    object desc extends RequestVar("") 

    def addCategory(in: NodeSeq): NodeSeq = { 
    def doAdd() { 
     //todo: Save Category 
    } 

    bind("cat", in, 
     "name" -> SHtml.text(name.is, (n: String) => name(n), ("id", "cat_name"), ("class", "input-large")), 
     "desc" -> SHtml.textarea(desc.is, (d: String) => desc(d), ("id", "cat_desc"), ("class", "input-large")), 
     "submit" -> SHtml.submit("Save", doAdd, ("class", "btn btn-info")) 
    ) 
    } 

我得到這個錯誤 -

Error processing snippet: admin:addcategory 
Reason: Method Not Found 
XML causing this error: 
<lift:admin:addcategory class="form-horizontal" form="POST"> 
     <fieldset> 
     <legend>Add Category</legend> 
     <div class="control-group"> 
      <label for="cat_name" class="control-label">Name</label> 
      <div class="controls"> 
      <cat:name></cat:name> 
      </div> 
     </div> 
     <div class="control-group"> 
      <label for="cat_desc" class="control-label">Description</label> 
      <div class="controls"> 
      <cat:desc></cat:desc> 
      <cat:submit></cat:submit> 
      </div> 
     </div> 
     </fieldset> 
    </lift:admin:addcategory> 

並在日誌中 -

[net.liftweb.http.LiftRules] - Snippet Failure: SnippetFailure(/admin/categories/add -> ParsePath(List(admin, categories, add),,true,false),Full(admin:addcategory),Method Not Found) 

需要這方面的幫助。我無法弄清楚爲什麼電梯無法找到方法。

回答

2

您是否已將您的admin包加入LiftRules?這樣的事情應該讓電梯搜索admin.snippets進行解析:

LiftRules.addToPackages("admin") 

而且,我相信你需要調用片段作爲Admin.addCategory,而不必用:

編輯:

我相信,電梯HTML5分析器是大小寫敏感的,並與駱駝的方法名稱的麻煩。您可能想嘗試將您的方法重命名爲全部小寫,或嘗試將您的代碼段稱爲(而不是<lift:風格):

<div class="lift:admin.addCategory"> ... </div> 

    or 

<div data-lift="admin.addCategory"> ... </div> 
+0

是的。我已將管理軟件包添加到Liftrules中。我也嘗試了兩種。和: – Shwetanka

+0

同樣的片段類中的其他方法也正常工作! – Shwetanka

+0

@Shwetanka,我剛剛編輯了另一個可能的建議的答案 – jcern