您所在的位置: 首页>>读书频道>>设计开发>>其它开发>>

2.3.4 改进“查看留言”

http://book.51cto.com  2008-04-02 15:06  李刚 郭秋霞  电子工业出版社  我要评论(0)
  • 摘要:《Ruby on Rails敏捷开发最佳实践》第2章向读者示范如何开发一个简单的Rails应用,这个Rails应用是一个简单的留言系统。本文讲了改进“查看留言”。
  • 标签:Rails  查看留言  Ruby on Rails敏捷开发最佳实践

2.3.4  改进“查看留言”

scaffold代码生成器生成的代码是不能满足我们查看留言的需求的,它不能显示图片,界面也十分简陋,这需要我们来改进“查看留言”部分的代码。

修改/app/views/message路径下的show.rhtml视图文件,修改后用于显示留言的代码片段如下。

<table width="80%" border=0 align="center" class="pt9" 
cellpadding=10 cellspacing="1" bgcolor="#BFCAE6">
<tr>
<td>
<p>
<label for="message_name">标题:</label>
<%= @message.title %>
</p>
<p>
<label for="message_description">内容:</label>
<%= @message.detail %>
</p>
<p>
<label for="message_picture">图片:</label>
<!-- 如果留言有图片 -->
<% if @message.has_picture? then %>
<!-- 调用url_for帮助方法,生成一个URL -->
<img height=120 width=120 align="center" src="<%= url_for(:action =>
"show_picture", :id => @message.id) %>"/>
<% else %>
<i>无图片</i>
<% end %>
</p>
<p>
<label for="message_time">留言时间:</label>
<%= show_date(@message.created_at)%>
</p>      
<p>
<label for="message_category">留言人:</label>
<!-- 调用user实例方法,返回Message对象对应的User对象 -->
<%= @message.user.name %>
</p>
<br>      
<%= link_to '返回', :action => 'list' %>
</td>
</tr>
</table>


上面的代码中,Message对象调用has_picture?方法来查询留言是否有图片(has_picture?方法定义的代码已经在前面2.3.2节中介绍过)。如果留言有图片,则调用Rails提供的url_for帮助方法,生成一个将会向show_picture Action发送请求的URL。然后通过这个Action来负责显示图片。

在message_controller.rb控制器文件中,添加show_picture Action的定义,该Action负责把数据库里保存的图片二进制数据转换成图片输出。该Action代码片段如下:

# 该方法用于在线显示图片
def show_picture
@message = Message.find(params[:id])
# 如果留言有图片
if @message.has_picture? then
# 通过调用send_data方法来发送图片中的二进制数据给用户
send_data(@message.picture_data,
# 通过将disposition选项设置为inline,指定直接显示该图片,而不是附件
:disposition => "inline",
# 指定一个HTTP内容类型
:type => @message.picture_content_type)
end
end

上面的方法定义通过调用Rails的send_data方法来把二进制数据转换成图片输出。其中,send_data方法的disposition选项应该指定为inline,否则,将会把文件以附件的形式下载。

修改完毕上述的代码之后,可以在浏览留言页面中选择一条标注为红色的“有图”字样的记录,单击它的“查看”链接,即可查看该留言的详细信息,包括图片。在浏览器中的显示效果如图2.11所示。

图2.3  firstApp应用 


图2.11  查看有图的留言
如图2.11所示,页面中不仅显示出留言的文本信息,同时显示出了图片。如果用户查看的是一条没有图片的留言记录,则用于显示图片的位置将仅仅显示“无图片”的文本提示信息。

【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
深入Vista应用程序开发
Ruby on Rails 社区网站开发
ASP.NET从入门到精通
Java完全自学宝典
JavaScript完全自学宝典
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有