活动通小结 ruby on rails 认证登录模块
做活动通以前没有接触过ruby语言,所以刚开始做活动通的时候比较茫然,后来先粗略的学习了一下ruby的语言,还是有很多不理解的地方,先直接拿过来用,等以后做完活动通了在回过头来理解一下ruby语言的运行机制。我前面已经写了怎样用rails新建一个工程,在这里不再赘述,如有需要可以看我前面的两篇博客。这里我主要讲一下在做活动通中遇到的一些难点,以及问题。
1.关于routing
运行项目会首先从public里面找静态的页面如果找到直接返回web serrver,如果没有找到会进入到rails代码,进入routing,routing会告诉它往哪走,也就是说如果有请求链接,通过routing就能够决定我们到底要执行哪个controller,还有哪个controller里的哪个action,然后controller会从model中取数据,然后返回给view
路由里的几个方法
get 不修改服务器上的内容,只是从服务器上取到数据
post 修改服务器上的内容
put 更新服务器上的内容
delete 删除服务器上的内容
举个例子
get "/modify_password" => "users#modify_password", :as => "modify_password"
modify_password是页面,找modify_password页面是会去users_controller里寻找modify_password方法,:as是为它命名为modify_password,有两种用法
= link_to "首页",modify_password_path //相当于href="/modify_password"
= link_to "首页",modify_password_url //相当于 href="localhost:3000/modify_password"
2.关于controller
controller通过model 对DB进行CRUD(即数据的增删改差),然后返回给view
举个例子
def create @user=User.new(params[:user]) //@user可以把值传给view if @user.save render :welcome //如果保存成功跳转welcome else render :signup //不成功跳转signup end end
3.form_for和form_tag rails 内建的表单辅助方法
form_for它可以在你修改的时候自动将值传入,例如
<%= form_for @event do |f| %> <%= f.text_field :name %> <%= f.submit %> <% end %>
form_tag不需要对应的表单
<%= form_tag "/search" do %> <%= text_field_tag :keyword %> <%= submit_tag %> <% end %>
4.has_secure_password rails内建的重复密码验证机制
需要在gemfile中添加
gem 'bcrypt', '~> 3.1.7'
运行bundle 进行安装
%p .input-group = f.label :请设置密码, :class => "input-group-addon", = f.password_field :password, :class => "form-control" %p .input-group = f.label :请确认重复密码, :class => "input-group-addon", = f.password_field :password_confirmation, :class => "form-control"
如果password和password_confirmation不一致的话,has_secure_password机制会自动提交失败。
先写到这里,刚学习ruby没多长时间,如果有任何问题,欢迎指正。