`

活动通小结 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没多长时间,如果有任何问题,欢迎指正。

 

 

 

1
0
分享到:
评论
2 楼 tianlitao 2014-08-26  
恩,我在看看这块
1 楼 zhangfortune 2014-08-26  
通过controller对model 进行CRUD(即数据的增删改差),然后返回给view
举个例子
这句话有问题,是C通过M对DB进行CURD操作。再理理这块
另外如果刚学的话尽量不要用别人的Gem自己尝试着写,知道原理了再用

相关推荐

Global site tag (gtag.js) - Google Analytics