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,如需转载请自行联系原作者
目录
相关文章
|
Android开发 Windows
第一章:Xamarin.Forms如何适应?(5)
安装在编写Xamarin.Forms的应用程序之前,您需要在Mac,PC或两者上安装Xamarin平台(如果您正在使用该设置)。 请参阅Xamarin网站上的文章:https://developer.xamarin.com/guides/cross-platform/getting_started/installation/您可能急于创建您的第一个Xamarin.Forms应用程序,但在此之前,您需要尝试为iPhone和Android以及普通的Windows,WindowsPhone和Windows 10 Mobile项目创建正常的Xamarin项目。
979 0
|
Android开发 iOS开发
【Xamarin.Forms】Xamarin.Forms 2.5.0中本体系Forms的发光之处
自从6月份我们预览了Native Forms以来,我们一直在努力平衡这些不足之处,并通过修复错误并整合来自社区的优秀反馈来为Xamarin.Forms 2.5.0打磨它。
1741 0
|
Android开发 Windows
【Xamarin.Forms】Xamarin.Forms的XAML预览器——查看您输入的Xamarin.Forms布局!
要求 项目需要使用最新的Xamarin.Forms NuGet包来使XAML预览器正常工作。 预览Android应用程序需要JDK 1.8 x64。发行说明中有更多信息。
2128 0
【Xamarin.Forms】在XAML中传递参数
本文演示了如何使用XAML属性来将参数传递给非默认构造函数,调用工厂方法以及指定泛型参数的类型。 概观 通常需要使用需要参数的构造函数实例化对象,或者调用静态创建方法。
1354 0
【Xamarin.Forms】XAML编译——使用XAML编译器来提高Xamarin.Forms应用程序的性能
XAML可以选择使用XAML编译器(XAMLC)直接编译为中间语言(IL)。XAMLC提供了许多好处: 它执行XAML的编译时检查,通知用户任何错误。
1123 0
你好,Xamarin.Forms
介绍与Xamarin.Forms跨平台开发 本指南介绍了使用Visual Studio for Mac或Visual Studio开发Xamarin.Forms应用程序以及使用Xamarin.Forms开发应用程序的基础知识。
977 0