Ruby on Rails中的表单数据处理

时间:2011-07-27 02:58:52

标签: ruby-on-rails

我是Rails的新手,现在正试图在Rails中编写一个小项目。作为这个项目的一部分,我想处理一个表格数据(密码)。我的表格是

<form name="input" action="http://0.0.0.0:3000/submit/" method="get">

Password: <input type="text" name="password" />

<input type="submit" value="Login" />

如果输入的密码正确我想显示另一个html页面,原始密码不存储在数据库中,意味着只想比较一个字符串。我使用'rails generate controller project'创建了一个控制器和视图。我认为密码匹配的代码应该写在'app / controllers'目录下的'project_controller.rb'文件中。但是如何编写密码匹配代码以及如何在'routes.rb'文件中映射网址?如果'get'方法更改为'post',需要进行哪些必要的更改?

1 个答案:

答案 0 :(得分:5)

首先,routes.rb是将url映射到控制器上的函数的文件

路由的基本示例就像这里

Foo::Application.routes.draw do
  get '/form'  => 'project#form'
  get '/submit'  => 'project#submit'
  get '/logedin'  => 'project#logedin'
end

我的project_controller.rb中有3个函数映射到函数 您可以通过将“获取”更改为“发布”

来将其更改为发布

这是project_controller.rb的示例代码

class ProjectController < ApplicationController
def form
    #will render view/project/form.html.erb
end

def submit
    if params[:password] == 'secret'
        redirect_to '/logedin'
    else
        #you can redirect to form again 
        #or render the form again
        render 'form' #render the view/project/form.html.erb
    end
end

def logedin
    render :text  => 'you are loged in'
end

表单函数将只显示app / view / project / form.html.erb

中的默认视图

提交是主要逻辑。您可以使用变量caled params

访问表单数据

代码很简单。您可以在导轨http://guides.rubyonrails.org/

上了解详细信息