试着把前天写的登录,都写在 controller 中的实现分成 controller 只接收参数,然后 model 来处理,再根据返回结果决定往哪里跳转
def login #login_controller.rb中的方法
@name=params[:admin][:name] #获取前台帐号
@password=params[:admin][:password] #获取前台密码
login=Login.new #为了调用model中的类,申请了个对象
@result=login.logintest(@name,@password) #通过方法将帐号密码传过去
redirect_to :controller=>"students",:action => "index",:notice => 'success' if @result=="success" #如果返回的是“success”跳往成功
redirect_to(:action => "fail") if @result=="fail" #如果返回的是“fail”跳往失败页面
end
class Login #login.rb中的类,因为没有logins表,故没写后面的(<ActiveRecord::Base)
def logintest(name,password)
@user=Admin.find_by_name_and_password(name,password)
if @user #如果帐户存在,返回"success"字符串
"success"
else
"fail" #如果帐户不存在,返回"fail"字符串
end
end
end
之前好用的代码被我这么一改就不好用了,报错 (Couldn't find Admin without an ID) 奇怪的是我之前登录也没用输过 ID 呀 但是我的思路是对的吧?嘿嘿 @zhaoguobin 那都写成 find 那样的类方法岂不是很方便,不然 ror 中也有像 spring 那样的框架解决什么依赖注入之类的问题吗:)
@azhao 如果有表,名为 tables 那就有个 table.rb 的 model 里面是 class Table < ActiveRecord::Base 如果只是想要个干活的类,那自己建个 work.rb 里面写自己的类 class Work 就行了吧?或者在 helpers 的 module 里写然后再引进来呢?嘿嘿嘿:)
#2 楼 @douya0808 没必要单独写一个 login class,你如果数据是存在 users table,直接在 user.rb 里写逻辑不就好了?