3.3. Forms

简介:

3.3. Forms

上节我们学习了如何使用link  helper 生成链接来从服务器端请求信息,但是在许多情况下,我们需要给服务器发送数据,这就是表单的作用了。首先,我们创建一个没有 Ajax 的表单。利用 form_tag helper 创建一个 form 元素。
<%= form_tag :action => 'reverse' %>
生成的html代码:


    
    
< form action ="/chapter3/reverse" method ="post" > </form>
 
 

   
   
    
    3.3.1
   
   . Form Tag Helpers
在表单中,有创建输入框的helper,下面看几个例子:


     
     
text_field_tag( name , value = nil , options = {} )
options选项是一个hash,用来控制HTML属性,例如:


    
    
<%= text_field_tag "name", "Scott",
     :size     => 5,
     :disabled => true,
     :style    => "background-color: red" %>
这个helper产生的HTML代码:


    
    
<input type="text" name="name" id="name" value="Scott"  
  size="5"
  disabled="disabled"
  style="background-color: red" />
 


    
    
hidden_field_tag(name, value=nil, options={})
 
options选项和text_field_tag的一样。


     
     
password_field_tag( name = "password" , value = nil , options = {} )
options选项和text_field_tag的一样。
file_field_tag( name , options = {} )
options选项和text_field_tag的一样。
check_box_tag( name , value = "1" , checked = false ,options = {} )
 
options选项和text_field_tag的一样。
 
radio_button_tag( name , value , checked = false , options = {} )
options选项和text_field_tag的一样。
text_area_tag( name , content = nil , options = {} )
options选项和text_field_tag的一样,除了:size选项用来指定高和宽,例如:


      
      
< %= text_area_tag "body", nil, :size = > "25x10" %>
 


       
       
select_tag( name , option_tags = nil , options = {} )
options选项和text_field_tag的一样,option_tags是一个包含选择框中选项的字符串。例如:


      
      
< %= select_tag "people", "<option >Joe </option>" %>
选择一些标签加入到index.rhtml视图模板中:


      
      
< %= form_tag :action = > 'reverse' %>
   < p >Text to reverse: < %= text_field_tag 'text_to_reverse' % > </p>
   < p > < %= submit_tag 'Reverse!' % > </p>
< %= end_form_tag % >
表单把数据提交到了reverse这个action, 这个action在前面已经定义过了, 但是还需要一个对应的模板。在app/views/chapter3/reverse.rhtml中加入下面的代码:


      
      
< %= @reversed_text % >
现在,刷新一下页面,在文本框中输入内容,点击提交按钮,如果一切顺利,reverse这个action会将输入文本倒序并且会在新的页面中呈现这个结果。
 

     
     

      
       
       
       
 
      
      

       
         
        
        

      
      
     
     
     
     
      
      3.3.2
     
     . Form Helpers
Form helper 与前面讲的 form_tag helper 不同 , 它是用来构建表单,这个构建的表单是跟从 controller 中指派到模板中的 ActiveRecord  对象相联系的。假设 controller 指派了一个 @person 对象到模板中,这个对象有一个 name 属性,就可以这么来创建这个表单:
< %= text_field :person, :name % >
form_tag helper 中有 name value 这两个参数,在 form helper 中使用 object_name method 参数。其中的可用选项类型是一样的:
text_field( object_name , method , options = {} )  

hidden_field( object_name , method , options = {} )  

password_field( object_name , method , options = {} )  

file_field( object_name , options = {} )  

check_box( object_name , method , options = {} , checked_value = "1" , unchecked_value = "0" )  

radio_button( object_name , method , tag_value , options = {} )  

text_area( object_name , method , options = {} )  

3.3.2 .1. Using form_for
当你创建与 ActiveRecord 对象一起工作的表单时,还有另外一个功能强大的 helper  form_for 。这个 helper form_tag 类似,除了它依赖于一个特定的 ActiveRecord 对象并且在 form_for block 中可以使用 form helper 来使表单代码更简洁。一般情况下,与 ActiveRecord 对象一起工作最好的选择是使用 form_for 而不是 form_tag, 这也遵循了 DRY 原则。因为 ActiveRecord 并不是本书要讲述的范围,所以这里也不再废话。你可以在 Rails API 文档中查阅有关 form_for 的更多细节。




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/91338,如需转载请自行联系原作者
目录
相关文章
|
Java Maven 微服务
springboot项目开启远程调试-jar包
springboot项目开启远程调试-jar包
367 0
|
存储 数据采集 安全
瓴羊Dataphin数据安全能力再升级,内置分类分级模板、上线隐私计算模块
瓴羊Dataphin数据安全能力再升级,内置分类分级模板、上线隐私计算模块
373 0
|
10月前
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
617 7
|
11月前
|
物联网 云计算
|
12月前
|
Kubernetes Java Android开发
用 Quarkus 框架优化 Java 微服务架构的设计与实现
Quarkus 是专为 GraalVM 和 OpenJDK HotSpot 设计的 Kubernetes Native Java 框架,提供快速启动、低内存占用及高效开发体验,显著优化了 Java 在微服务架构中的表现。它采用提前编译和懒加载技术实现毫秒级启动,通过优化类加载机制降低内存消耗,并支持多种技术和框架集成,如 Kubernetes、Docker 及 Eclipse MicroProfile,助力开发者轻松构建强大微服务应用。例如,在电商场景中,可利用 Quarkus 快速搭建商品管理和订单管理等微服务,提升系统响应速度与稳定性。
390 5
|
存储 数据中心 Windows
GPT和MBR的区别
GPT和MBR的区别
544 1
GPT和MBR的区别
|
人工智能 数据中心 Anolis
NVIDIA AI 新网络助力龙蜥提升网络通信速率
面向新 AI 数据中心,网络如何改进?
|
存储 机器学习/深度学习 安全
阿里云服务器价格参考,2000元预算可购买的云服务器配置及价格
2000元左右预算可以买到哪些配置的阿里云服务器?目前阿里云活动中价格在3000元左右的云服务器有22款,其中经济型e实例3款,通用算力型u1实例9款,计算型c7实例1款,通用型g7实例1款,内存型r7实例1款,倚天云服务器6款,本文将为您解读3000元预算目前在阿里云的活动中可购买到的阿里云服务器配置及具体价格。
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器免费用!最高4核16G配置,最长3个月,这波羊毛可以薅
阿里云服务器到底好不好用,必须试试才知道!为此,阿里云特意推出了云产品试用活动,包括云服务器在内的132款云产品提供免费试用,即日起,凡注册阿里云且通过实名认证的新用户,个人用户提供每月750小时的免费试用时长,企业用户最长可免费试用3个月云服务器,免费云服务器最高配置为4核16G1M配置云服务器。
阿里云服务器免费用!最高4核16G配置,最长3个月,这波羊毛可以薅
|
存储 缓存 NoSQL
Python中的缓存库
Python中的缓存库
234 0