我是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',需要进行哪些必要的更改?
首先,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/上了解详细信息