2016-07-30 93 views
1

我努力学习ChicagoBoss MVC Web框架before_呼叫后调用和本教程似乎是一个良好的开端控制器动作不ChicagoBoss

https://github.com/ChicagoBoss/ChicagoBoss/wiki/an-evening-with-chicago-boss

这是所有伟大的和令人兴奋的,直到笔者介绍了before_函数来确保required_login被调用。我现在面临的问题是,list功能停止被调用,这里是我的代码

-module(outings_outgoer_controller, [Req]). 
-compile(export_all). 
% -export([list/3]). 

before_ (Action) -> 
    io:fwrite("in before_ Action is: ~s~n", [Action]), 
    case Action of 
     "login" -> 
      ok; 
     "register" -> 
      ok; 
     _ -> 
      io:fwrite(" - login is required for this action!~n", []), %gets printed successfully 
      Outgoer = user_lib:require_login(Req), 
      io:fwrite(" - ~p is logged in~n", [Outgoer]), %gets printed successfully 
      Outgoer 
    end. 

list('GET', [], Outgoer) -> 
    io:fwrite("An outgoer is requesting his list~n", []), % never gets printed 
    {ok, [{outgoer, Outgoer}]} 

这里是require_login功能

require_login(Req) -> 
    case Req:cookie("user_id") of 
     undefined -> {redirect, "/outgoer/login"}; 
     Id -> 
      case boss_db:find(Id) of 
       undefined -> {redirect, "/outgoer/login"}; 
       Outgoer -> 
        case Outgoer:session_identifier() =:= Req:cookie("session_id") of 
         false -> {redirect, "/outgoer/login"}; 
         true -> {ok, Outgoer} 
        end 
      end 
    end. 

,这是打印我在控制台中看到在访问outgoer/list

in before_ Action is: list 
    - login is required for this action! 
    - {ok,{outgoer,"outgoer-1","mohamed","[email protected]", 
      "a982ff46c5664edc593329ab558445fc"}} is logged in 
20:29:31.439 [notice] [ChicagoBoss] The function outings_outgoer_controller:list/2 is not exported, if in doubt add -export([list/2])) to the module 
20:29:31.440 [info] GET /outgoer/list [outings] 200 18ms 
Reloading outings_outgoer_controller ... fail: nofile. 

我从https://github.com/ChicagoBoss/ChicagoBoss下载ChicagoBoss和我与Erlang 18工作

回答

0

事实证明,我得到了通知outings_outgoer_controller:list/2 is not exported,因为`list'函数编译失败,因为我忘了用点结束函数。反正我得到的提示从http://learnyousomeerlang.com/errors-and-exceptions它说

./module.erl:2:功能some_function/1未定义 功能不存在。
您在-export属性中或声明函数时写了错误的名称或参数。当给定函数无法编译时,也会输出此错误,通常是因为语法错误,例如忘记用句号结束​​函数。