我刚开始用Clojure进行黑客攻击,虽然我喜欢这种语言,但我还是不明白如何习惯性地做某些事情.
使用compojure编写Web应用程序,这是我的控制器操作之一:
(defn create [session params]
(let [user (user/find-by-email (params :email))]
(if user
(if (user/authenticate user (params :password))
(do (sign-in session user)
(resp/redirect "/home?signed-in=true"))
(resp/redirect "/?error=incorrect-password"))
(let [new-user (user/create params)]
(sign-in session new-user)
(resp/redirect "/home?new-user=true")))))
Run Code Online (Sandbox Code Playgroud)
我正在以非常紧迫的方式写这篇文章.使用这么多lets/ifs/dos,我不禁想到我做错了什么.我如何在功能上写这个?
这是我想要做的psuedocode
look if user exists
if user exists, try to sign user in using password provided
if password is wrong, redirect to "/?error=incorrect-password"
if password is correct, sign user in and redirect to "/home?signed-in=true"
else create user, sign …Run Code Online (Sandbox Code Playgroud) 如果用户已登录(即会话的user-id密钥值为非零值),则路由到一个页面的最佳方式是什么?如果用户未登录,则是另一个页面的最佳方法?理想的是两组不同的路线.
谢谢!
另外,有没有使用compojure的好示例应用程序?
为什么rails 3.1有jQuery gem?似乎更容易将单个缩小的文件放在javascripts assets文件夹中.是代码组织吗?(Gemfile中的所有先决条件).有什么我想念的吗?
非常感谢!
jquery rubygems ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1
(use 'korma.db)和之间有什么区别(:use korma.db)?
从功能上看,他们似乎做同样的事情,但是看起来它是一个函数调用而另一个是取消引用一个映射?为什么两种写作方式以及它们最终如何做同样的事情?
非常感谢!