`

Ruby rails 页面跳转(render和redirect_to)

阅读更多

今天在做R.R.log的时候发现个问题,在修改密码的时候如果没有通过校验,没有显示校验错误的信息。

if @user.update_attributes(:password => params[:user][:password]) 
flash[:notice] = '密码修改完成' 
redirect_to :action => 'index' 
else 
redirect_to :action => 'change_pass', :id => @user 
end

 后来随手改了下第5行,把redirect_to改为render,居然就OK了。网上找了下才发现redirect_to和render还是有很多区别的,我以前居然一点都没有注意,汗.. 

redirect_to实现的是action方法的跳转,向浏览器发起一个新的请求,具体使用方法如下: 

 

redirect_to :action => 'edit', :id => 7 
redirect_to "http://wiisola.javaeye.com/" 
redirect_to "/images/1.jpg" 
redirect_to :back 

 其中第4行是回到上一次访问的页面。 

render可以翻译成"渲染",也就是说,render仅仅渲染了一个新的模板,而没有执行相应的action。render的用法如下: 

render(:text => string) 
render(:inline => string, [:type => "rhtml"|"rxml"]) 
render(:action => action_name) 
render(:file => path, [:use_full_path => true|false]) 
render(:template => name) 
render(:partial => name) 
render(:nothing=>true) 
render()

第1行:直接渲染出文本 

第2行:把传入的string渲染成模板(rhtml或者rxml) 
第3行:直接调用某个action的模板,相当于forward到一个view 
第4行:使用某个模板文件render, 当use_full_path参数为true时可以传入相对路径 
第5行:使用模板名render,e.x.: render(:template => "blog/short_list") 
第6行:以局部模板渲染 
第7行:什么也不输出,包括layout 
第8行:默认的的render, 相当于render(:action => self) 
补上一个手动render的例子: 

def search 
@results =Search.find(params[:query]) 
case @results 
when 0 then render :action=> "no_results" 
when 1 then render :action=> "show" 
when 2..10 then render :action=> "show_many" 
end 
end 
def search 
@results =Search.find(params[:query]) 
case @results 
when 0 then render :action=> "no_results" 
when 1 then render :action=> "show" 
when 2..10 then render :action=> "show_many" 
end 
end 

 但是我自己的问题仍然没有解决,为什么用render渲染一个模板能够显示错误信息,但用redirect_to重新请求就没有呢?也许看源码能够解决吧,可惜看不懂,汗..总之以后记住render和redirect_to的用法就是了。

 

分享到:
评论

相关推荐

    Ruby on Rails_ Up and Running

    RUBY的经典之作,对其在RAILS下开发写得很详细

    Ruby-on-Rails-rails.zip

    Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    "Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言的基础以及Rails框架的核心概念。 在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...

    Ruby_on_Rails_Web_开发之旅[清晰文字pdf].part1

    本书从Ruby和Rails的历史讲起,以在Rails框架上克隆故事共享网站digg.com为例,详细讲述了Ruby和Rails的安装过程、框架组成部分、与AJAX和Web 2.0技术结合、安全措施、高级话题和扩展功能等。本书带领读者运用最新...

    Ruby的render_partial技术详解

    整理后的在Ruby on rails的Haml有关render_partial的用法,本资源为一张图

    Rails确认替换为SweetAlert_Ruby_HTML_下载.zip

    Rails框架是基于Ruby的一种Web开发框架,它以其“约定优于配置”的理念,为开发者提供了高效且灵活的开发环境。在Rails应用中,我们经常需要处理用户确认操作,比如删除、更新等,确保用户在执行不可逆操作前进行...

    采用UTF-8解决Ruby on Rails程序的中问题

    1.将.rb文件和.rhtml文件都保存为utf-8格式; 2.在/app/Controller/application.rb中增加... 您可能感兴趣的文章:Ruby rails 页面跳转(render和redirect_to)学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake, rail

    rails_tutorial_4th_edition_gemfiles, Ruby on Rails 教程 4th 版的Gemfiles.zip

    rails_tutorial_4th_edition_gemfiles, Ruby on Rails 教程 4th 版的Gemfiles Ruby on Rails 教程 4th 版 Gemfiles这些是最新版本的Gemfiles 在 Rails 教程 ruby Tutorial/Michael/ ( 4th 米。) 。 因为这里的文件更...

    用于过滤英文脏话的 Rails 插件 gem_Ruby_代码_相关文件_下载

    在Ruby on Rails开发中,有时候我们需要对用户输入的数据进行过滤,特别是处理英文内容时,防止出现不合适的脏话或亵渎性词汇。标题提到的"用于过滤英文脏话的 Rails 插件 gem"正是为了解决这个问题。这个插件允许...

    Ruby_on_Rails_Web_开发之旅[清晰文字pdf].part2

    本书从Ruby和Rails的历史讲起,以在Rails框架上克隆故事共享网站digg.com为例,详细讲述了Ruby和Rails的安装过程、框架组成部分、与AJAX和Web 2.0技术结合、安全措施、高级话题和扩展功能等。本书带领读者运用最新...

    rails 连接mysql的问题解决

    找不到指定的模块。... 您可能感兴趣的文章:Ruby rails 页面跳转(render和redirect_to)Rails link_to 详解rails常用数据库查询操作、方法浅析学习Ruby你需要了解的相关知识(rvm, gem, bundle, rake,

    weixin_rails_middleware, 微信集成 ruby weixin_rails_middleware for integration weixin..zip

    `weixin_rails_middleware` 是一个开源的 Ruby 框架中间件,设计用于帮助开发者轻松地在 Rails 应用程序中集成微信服务。这个中间件提供了与微信API交互的功能,包括验证微信服务器的请求、处理用户消息、以及发送...

    Ruby on Rails Tutorial

    在这个全球互联的世界中,计算机编程和 Web 应用程序开发都在迅猛发展,我很期待能为中国的开发者提供 Ruby on Rails 培训。学习英语这门世界语言是很重要的,但先通过母语学习往往会更有效果。正因为这样,当看到 ...

    Redmine 搭建 Ruby_Ruby_on_Rails 项目管理系统

    **Redmine** 是一个基于 Web 的项目管理和跟踪工具,它使用 Ruby on Rails(简称 ROR)框架构建而成。Redmine 的设计初衷是为了提供一个灵活且易于定制的解决方案来满足不同组织对项目管理的需求。它支持多种数据库...

    举例理解Ruby on Rails的页面缓存机制

    在标题和描述中提到的“举例理解Ruby on Rails的页面缓存机制”,主要是指通过具体的例子来阐述如何在实际项目中运用页面缓存。例如,IBM 官方技术文档中的内容可能包含以下示例: 1. **启用页面缓存**:在 Rails ...

    Ruby on Rails实践

    此外,Rails的辅助方法如`link_to`和`form_for`,简化了视图中的链接和表单生成。 测试驱动开发(TDD)在Rails中被广泛采用。Rails内置了Test::Unit和RSpec等测试框架,开发者可以通过编写测试先于代码来确保程序的...

    ruby on rails对mongodb的操作

    在Rails应用中,我们还可以使用`form_for`和其他Rails助手来处理表单提交,以及`render`和`redirect_to`来管理视图和路由。 最后,`Rails应用中MongoDB+MySQL杂交`的话题意味着在同一个应用中同时使用MongoDB和...

Global site tag (gtag.js) - Google Analytics