论坛首页 入门讨论版 Ruby

Rails 一个示例

浏览 3894 次
该帖已经被评为新手帖
作者 正文
最后更新时间:2006-12-10 关键字: rails 编码 乱码 utf8 问题 数据库配置 页面乱码 数据库乱码 mysql乱码
1、创建项目

 在命令行运行:rails c:\depot
 会在c:\depot下产生项目代码框架
 

2、配置数据库
 首先要配置好数据库,在c:\depot\config\database.yml 中定义
  我们使用mysql,找到如下代码
  development:
  adapter: mysql
  database: depot_development
  username: root
  password:
  host: localhost
  encoding: utf8   
<== 重要!要把编码设置与mysql数据库一样,否则乱码
  
  你要建立一个简单的数据库,再建一个表。

3、生成代码
   确定配置好数据库并建立表后。
   命令行输入:其中中Product 是你在数据库中建立的一个表名

  1. cd c:\depot   
  2. ruby script/generate scaffold Product Admin  


   生成Admin的控制、模型及视图代码。

4、启动Ruby web服务器 

  1. cd c:\depot   
  2. ruby script/server  


   WEBrick 1.3.1服务会启动,默认监听在3000端口上。
 
5、打开浏览器,访问网页
    命令行输入: http://localhost:3000/admin
   如果没有问题,就会出现一个针对Product数据表的能够增、删、查、改的简单程序。

6、可能遇到的问题:

   数据库乱码问题:
      要在config\database.yml中加入encoding: utf8 选项,当然这里utf8要根据你的建立数据库的编码填写相应值 。  

   对于字符串截取问题,一个中文占两个字符问题:
      在c:\depot\config\environment.rb 中加入以下代码            

ruby 代码
  1. $KCODE = 'u'   
  2.  require 'jcode'  

 这样一个中文字符只占一个了!

 可用如下代码测试一下:

<%="中1华332人民共和国".split(//)[0,4] %> 
输出:中1华3

 

其他乱码解决方法:

1、查看你的rhtml文件或rb编码是否是UTF8,如果不是,则要改成utf8,方法是使用记事本或editplus等编辑器另存一下,另存时下面有个编码选项,改为UTF8保存即可。

2、mysql数据库编码是否正确
查看mysql数据库编码,进入mysql命令行中,输入命令

代码
  1. mysql>  show Variables like '%set%';   
  2.   
  3. +--------------------------+--------------+   
  4. | Variable_name            | Value    |   
  5. +--------------------------+--------------+   
  6. | auto_increment_offset    | 1        |   
  7. | character_set_client     | utf8     |   
  8. | character_set_connection | utf8     |   
  9. | character_set_database   | utf8     |   
  10. | character_set_filesystem | binary   |   
  11. | character_set_results    | utf8     |   
  12. | character_set_server     | utf8     |   
  13. | character_set_system     | utf8     |    
  14. +--------------------------+--------------+   

 

如果显示为上面的内容,则说明你的mysql编码为UTF8。

如果不是,则要修改mysql安装目录下的my.ini文件,把其中的所有编码改为UTF8就行,批量查找替换一下会很快。

   
最后更新时间:2006-12-10
写了个简单的例子,用的是mysql数据库,发现如果把编码都改成gb2312的编码还可以,这样数据库,页面(包括rails 内部的输出信息改成中文)都可以,如果都改成utf8编码的话,rails的内部信息(改成中文)还是乱码!不知道这个问题,怎么解决?
--------------
另上一篇的hello world的输出<%=@time%>这个能不能不改浏览器的编码就可以看到的是中文,我想这个问题解决了,上面的也就好说了!
   
0 请登录后投票
最后更新时间:2006-12-10
我想你遇到的编码问题可能原因有两点:

1、查看你的rhtml文件或rb编码是否是UTF8,如果不是,则要改成utf8,方法是使用记事本或editplus等编辑器另存一下,另存时下面有个编码选项,改为UTF8保存即可。

2、mysql数据库编码是否正确
查看mysql数据库编码,进入mysql命令行中,输入命令
mysql>  show Variables like '%set%';

+--------------------------+--------------+
| Variable_name            | Value    |
+--------------------------+--------------+
| auto_increment_offset    | 1        |
| character_set_client     | utf8     |
| character_set_connection | utf8     |
| character_set_database   | utf8     |
| character_set_filesystem | binary   |
| character_set_results    | utf8     |
| character_set_server     | utf8     |
| character_set_system     | utf8     | 
+--------------------------+--------------+


如果显示为上面的内容,则说明你的mysql编码为UTF8。

如果不是,则要修改mysql安装目录下的my.ini文件,把其中的所有编码改为UTF8就行,批量查找替换一下会很快。
   
0 请登录后投票
最后更新时间:2006-12-11
 <td><%= link_to '查看', :action => 'show', :id => test %></td>
    <td><%= link_to '编辑', :action => 'edit', :id => test %></td>
    <td><%= link_to '删除', { :action => 'destroy', :id => test }, :confirm => 'Are you sure?', :post => true %></td>

数据库的编码已经都显示正确,用的都是utf8编码,可是页面显示要是乱码
<html>
<head>
 	<meta http-equiv="Content-Type" content="text/html; charset=utf8">
  <title>Tests: list</title>
  <link href="/stylesheets/scaffold.css?1165650995" media="screen" rel="Stylesheet" type="text/css" />
</head>
<body>

<p style="color: green"></p>

<h1>Listing tests</h1>

<table>
  <tr>
  
    <th>Name</th>
  
    <th>Descn</th>
  
  </tr>
  

  <tr>
  
    <td>测试</td>
  
    <td>测试测试测试测试测试测试</td>

  
    <td><a href="/tests/show/1">�鿴</a></td>
    <td><a href="/tests/edit/1">�༭</a></td>
    <td><a href="/tests/destroy/1" onclick="if (confirm('Are you sure?')) { var f = document.createElement('form'); this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit(); };return false;">ɾ��</a></td>
  </tr>

</table>


 

<br />

<a href="/tests/new">New test</a>


</body>
</html>
   
0 请登录后投票
最后更新时间:2006-12-11
javaeye用的是utf8编码,不知道他们是怎么处理的,我看在blog的页面也是显示"编辑"而不是英文?
   
0 请登录后投票
最后更新时间:2006-12-11
把你的页面发过个看看。wlbookwl at 163.com

估计你的是没转码。

你可看看我的一个rhtml示例页面,这里下载附件。
http://wlbookwl.javaeye.com/blog/37443
   
0 请登录后投票
最后更新时间:2006-12-11
找到问题了,是没有改把整个项目的编码改成utf8,谢谢wlbookwl
   
0 请登录后投票
最后更新时间:2006-12-27
我发现很多人都热衷utf8,请问为什么不用GBK,我的Mysql、database.yml中的Encoding和页面都是用GBK,用得很顺畅,没有试过UTF8,请问UTF8有什么好处
   
0 请登录后投票
最后更新时间:2006-12-29
国际化,支持多种语言
   
0 请登录后投票
论坛首页 入门讨论版 Ruby

跳转论坛:
JavaEye推荐