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>

これを snippet -Admin.scala in (admin/snippet package) with addCategorymethod にバインドしようとしています。

 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)

これには助けが必要です。リフトがメソッドを見つけられない理由がわかりません。

4

1 に答える 1