Ruby on Rails 2.1 - HTML 表单

表单

要创建具有指定操作和 POST 请求的表单标签,请使用以下语法−

<% form_tag :action => 'update', :id => @some_object do %>
Ruby Block
<% end %>

or

<% form_tag( { :action => :save, }, { :method => :post }) do %>
Ruby Block
<% end %>

使用 :multipart => true 定义 MIME-multipart 表单(用于文件上传)。

<% form_tag( {:action => 'upload'}, :multipart => true ) do %>
Ruby Block
<% end %>

文件上传

在视图中定义多部分表单 −

<% form_tag( { :action => 'upload' }, :multipart => true ) do %>
   Upload file: <%= file_field( "form", "file" ) %>
   <br />
   <%= submit_tag( "Upload file" ) %>
<% end %>

在控制器中处理上传 −

def upload
   file_field = @params['form']['file'] rescue nil
   # file_field is a StringIO object
   file_field.content_type # 'text/csv'
   file_field.full_original_filename
   ...
end

文本字段

要创建文本字段,请使用以下语法 −

<%= text_field :modelname, :attribute_name, options %>

查看以下示例 −

<%= text_field "person", "name", "size" => 20 %>

它将生成以下代码 −

<input type="text" id="person_name" name="person[name]"
size="20" value="<%= @person.name %>" />

要创建隐藏字段,请使用以下语法 −

<%= hidden_​​field ... %>

要创建密码字段,请使用以下语法 −

<%= password_field ... %>

要创建文件上传字段,请使用以下语法 −

<%= file_field ... %>

文本区域

要创建文本区域,请使用以下语法 −

<%= text_area ... %>

查看以下示例 −

<%= text_area "post", "body", "cols" => 20, "rows" => 40%>

它将生成以下代码 −

<textarea cols="20" rows="40" id="post_body" name="post[body]">
<%={@post.body}%>
</textarea>

单选按钮

要创建单选按钮,请使用以下语法 −

<%= radio_button :modelname, :attribute, :tag_value, options %>

查看以下示例 −

radio_button("post", "category", "rails")
radio_button("post", "category", "java")

它将生成以下代码 −

<input type="radio" id="post_category" name="post[category]" 
   value="rails" checked="checked" />
<input type="radio" id="post_category" name="post[category]" 
   value="java" />

复选框按钮

要创建复选框按钮,请使用以下语法 −

<%= check_box :modelname, :attribute,options,on_value,off_value%>

查看以下示例−

check_box("post", "validated")

它将生成以下代码 −

<input type="checkbox" id="post_validate" name="post[validated]"
value="1" checked="checked" />
<input name="post[validated]" type="hidden" value="0" />

我们再看一个例子 −

check_box("puppy", "gooddog", {}, "yes", "no")

它将生成以下代码 −

<input type="checkbox" id="puppy_gooddog" name="puppy[gooddog]" 
   value="yes" />
<input name="puppy[gooddog]" type="hidden" value="no" />

选项

要创建下拉列表,请使用以下语法 −

<%= select :variable,:attribute,choices,options,html_options%>

查看以下示例 −

select("post", "person_id", Person.find(:all).collect {|p| [ p.name, p.id ] })

这可以生成以下代码。这取决于数据库中可用的值。

<select name="post[person_id]">
   <option value="1">David</option>
   <option value="2">Sam</option>
   <option value="3">Tobias</option>
</select>

日期时间

以下是使用日期和时间的语法 −

<%= date_select :variable, :attribute, options %>
<%= datetime_select :variable, :attribute, options %>

以下是使用示例 −

<%=date_select "post", "written_on"%>
<%=date_select "user", "birthday", :start_year => 1910%>
<%=date_select "user", "cc_date", :start_year => 2005,
   :use_month_numbers => true,
   :discard_day => true,
   :order => [:year, :month]%>
<%=datetime_select "post", "written_on"%>

rails-quick-guide.html