ruby on rails 学习(3):rails 中的 html 元素

      在创建了 application 及 至少一个 controller 和相应的 view 之后,就可以从浏览器访问 view 文件了。此篇简单介绍 html 元素的显示等。

      1. rails 显示中文乱码问题

      在浏览器中显示 英文 基本上是不会有问题的。文件乱码的问题只会出现在非英文内容的显示上。rails 中显示中文也极有可能遇到乱码的问题。在进行网页设计时最基本的一个出发点便是 尽量使用统一的编码风格,建议使用 utf-8,一般的浏览器会自动检测网页编码类型,但是我们决不能依赖于浏览器自身的智能性。我在 rails 的 rhtml 文件中加入中文后就出现了乱码问题。还是查网页寻找解决之法。( 现在的大多数网站都缺少原创精神,你转我,我转他,他再转它,转来转去用户看到的基本上都是同一篇文章,很多情况下根本解决不了问题。搜索引擎也对此也不做任何筛选,只是单纯的显示检索到的文章。这可真是中国互联网上的恶俗。)针对此问题,我检索结果的前十项文章是一模一样,而按照此篇文章所述还是解决不了我的乱码问题。先贴出网络上检索到的解决办法:     

修改ApplicationController(该文件位于:../app/controllers/application.rb):  

class ApplicationController < ActionController::Base 
  before_filter :configure_charsets 
    def configure_charsets 
      @response.headers["Content-Type"] = "text/html; charset=utf-8" 
      suppress(ActiveRecord::StatementInvalid) do 
          ActiveRecord::Base.connection.execute 'SET NAMES utf8' 
      end 
    end 
end 

即便按照上面所说还是不能解决乱码问题。之后经过我的实验,将上面不同颜色处的代码用 # 注释掉之后便能解决我的乱码问题。各位看客若遇到乱码问题,不防一试。

      2. form 表单

     从网络上查到得文章(又是千篇一律)说在 rhtml 文件中显示 form 表单要加入表单开始标签:(以下代码来源于网络)    

<%= form_tag { :action => :save }, { :method => :post } %> 
Use :multipart => true to define a Mime-Multipart form (for file uploads) 

     以及结束标签:  

<%= end_form_tag %>

     但是浏览器端解释有问题,让我一顿烦恼。但是在我的浏览器端去掉这个所谓的 form 开始和结束标签,再加入如下 2 份代码之一表单显示却是正确的。

<div class=""class="form">
<%= error_messages_for 'user' %>
  <fieldset>
  <legend>请输入用户信息</legend>
    <% form_for :user do |form| %>
    Name: <%= form.text_field :username, :size => 30      %>
    Password: <%= form.password_field :password, :size => 30 %>
    ConfirmPassword: <%= form.password_field :password_confirmation, :size => 30 %>
    <%= submit_tag "注册", :class => "submit" %>
    <% end %>
  </fieldset>
</div>

或下面表单代码:

<div class=""class="form">
<%= error_messages_for 'user' %>
<fieldset>
<legend>请输入用户信息</legend>
<% form_tag do %>
  Name: <%= text_field_tag :username, params[:username], :size => 30      %>
  Password: <%= password_field_tag :password, params[:password], :size => 30 %>
  <%= submit_tag "注册", :class => "submit" %>
<% end %>
</fieldset>
</div>

      在这里我的浏览器显示 error_messages_for was removed from Rails and is now available as a plugin,即是说 error_message_for 已经不能作为内置的方法使用了,而是已经作为一个插件了(估计功能加强了)。去掉 <%= error_messages_for 'user' %> 这行代码,浏览器便成功解析了代码。

       1> 文本域

       多行文本域 text_field_tag(name, content =nil, option = {})      

       普通文本域 text_field_tag(name, value = nil, option = {})

       隐藏文本域 hidden_field_tag(name, value = nil, option = {})

       密码文本域 password_field_tab(name, value = nil, option ={})      

       name, value 就如同 html 中的文本属性一样,这里的 option 属性 可以用来表示一些显示设置。

       注意:表单元素的显示需要使用 <%=  %>, option 参数均为可选参数。

       如 <%= text_field_tag("name", "ruby",{:disable=>true, :size=>40, :maxlength=>22})

       2> 选框类

       单选框 radio_button_tag(name, value, checked = false, option = {})

       单选框的 name 属性指示组名。

       复选框 check_button_tag(name, value = "1", checked = false, option = {})

       复选框的 name 属性同样指示组名。

       3> 文件域

       文件域 file_field_tag(name, option = {})

       4> 列表框

        select_tag(name, option_tags = nil, options = {})

        .rhtml 中的文件实现例:        

<%=
select_tag(
              "color",
               { 
                 :a =>"<option>black</option>",
                 :b =>"<option value =pink>pink</option>"
                }
%>
        5> 按钮类

        提交 submit_tag(value = "submit", options = {})

        图片按钮 image_submit_tag(source, options = {})

posted @ 2011-03-30 16:03  rereadyou  阅读(2847)  评论(0编辑  收藏  举报