Ruby on Rails中的表单数据处理

ARU*_*P.S 1 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" />
Run Code Online (Sandbox Code Playgroud)

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

ahm*_*hmy 5

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

路由的基本示例就像这里一样

Foo::Application.routes.draw do
  get '/form'  => 'project#form'
  get '/submit'  => 'project#submit'
  get '/logedin'  => 'project#logedin'
end
Run Code Online (Sandbox Code Playgroud)

我在我的project_controller.rb中有3个函数映射到一个函数,你可以通过将'get'更改为'post'来将其更改为post

这是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
Run Code Online (Sandbox Code Playgroud)

结束

表单函数将只显示app/view/project/form.html.erb中的默认视图

提交是主要逻辑.您可以使用variabel caled params访问表单数据

代码很简单.您可以在rails指南http://guides.rubyonrails.org/上了解详细信息