活动通小结 ruby on rails 认证登录模块

来源:互联网 发布:java网络编程 编辑:程序博客网 时间:2024/04/28 20:52

做活动通以前没有接触过ruby语言,所以刚开始做活动通的时候比较茫然,后来先粗略的学习了一下ruby的语言,还是有很多不理解的地方,先直接拿过来用,等以后做完活动通了在回过头来理解一下ruby语言的运行机制。我前面已经写了怎样用rails新建一个工程,在这里不再赘述,如有需要可以看我前面的两篇博客。这里我主要讲一下在做活动通中遇到的一些难点,以及问题。

1.关于routing

运行项目会首先从public里面找静态的页面如果找到直接返回web serrver,如果没有找到会进入到rails代码,进入routing,routing会告诉它往哪走,也就是说如果有请求链接,通过routing就能够决定我们到底要执行哪个controller,还有哪个controller里的哪个action,然后controller会从model中取数据,然后返回给view

路由里的几个方法

get 不修改服务器上的内容,只是从服务器上取到数据

post  修改服务器上的内容

put 更新服务器上的内容

delete 删除服务器上的内容

举个例子

Java代码  收藏代码
  1. get "/modify_password" => "users#modify_password", :as => "modify_password"  

 modify_password是页面,找modify_password页面是会去users_controller里寻找modify_password方法,:as是为它命名为modify_password,有两种用法

Java代码  收藏代码
  1. = link_to "首页",modify_password_path  //相当于href="/modify_password"  

 

Java代码  收藏代码
  1. = link_to "首页",modify_password_url   //相当于 href="localhost:3000/modify_password"  

 2.关于controller

通过controller对model 进行CRUD(即数据的增删改差),然后返回给view

举个例子

Java代码  收藏代码
  1. def create  
  2.   @user=User.new(params[:user])   //@user可以把值传给view  
  3.   if @user.save  
  4.     render :welcome         //如果保存成功跳转welcome  
  5. else  
  6.       render :signup      //不成功跳转signup  
  7. end  
  8. end  

 3.form_for和form_tag  rails 内建的表单辅助方法

form_for它可以在你修改的时候自动将值传入,例如

Java代码  收藏代码
  1. <%= form_for @event do |f| %>  
  2.     <%= f.text_field :name %>  
  3.     <%= f.submit %>  
  4. <% end %>  

 form_tag不需要对应的表单

Java代码  收藏代码
  1. <%= form_tag "/search" do %>  
  2.     <%= text_field_tag :keyword %>  
  3.     <%= submit_tag %>  
  4. <% end %>  

 4.has_secure_password rails内建的重复密码验证机制

需要在gemfile中添加

Java代码  收藏代码
  1. gem 'bcrypt''~> 3.1.7'  

 运行bundle 进行安装

Java代码  收藏代码
  1. %p  
  2.        .input-group  
  3.          = f.label :请设置密码, :class => "input-group-addon",   
  4.          = f.password_field :password, :class => "form-control"  
  5.        %p  
  6.        .input-group  
  7.          = f.label :请确认重复密码, :class => "input-group-addon",   
  8.          = f.password_field :password_confirmation, :class => "form-control"  

 如果password和password_confirmation不一致的话,has_secure_password机制会自动提交失败。

0 0
原创粉丝点击