link_to,redirect_to和render之间有什么区别?

Sam*_*ami 31 ruby ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

我感到困惑之间的主要区别(S) link_to,redirect_torender在轨道上.任何人都可以请解释.

Red*_*VII 32

link_to在您的视图中使用,并为链接生成html代码

<%= link_to "Google", "http://google.com" %>
Run Code Online (Sandbox Code Playgroud)

这将在您的视图中生成以下html

<a href="http://google.com">Google</a>
Run Code Online (Sandbox Code Playgroud)

redirect_to和render在您的控制器中用于回复请求.如果在您添加的控制器中,redirect_to只会将请求重定向到新的URL

redirect_to "http://google.com"
Run Code Online (Sandbox Code Playgroud)

访问您网页的任何人都将被有效地重定向到Google

render可以在很多方面使用,但它主要用于渲染你的html视图.

render "article/show"
Run Code Online (Sandbox Code Playgroud)

这将呈现视图"app/views/article/show.html.erb"

以下链接将更详细地解释redirect_to和render方法 http://guides.rubyonrails.org/layouts_and_rendering.html


sar*_*gas 10

文档:

关于渲染视图与重定向请求

...render告诉Rails在构造响应时使用哪个视图(或其他资源).redirect_to方法完全不同:它告诉浏览器发送不同URL的新请求.

关于渲染视图

...render:action不会在目标操作中运行任何代码...

关于重定向请求

...您的代码停止运行并等待浏览器的新请求.只是通过发送回HTTP 302状态代码,您已经告诉浏览器接下来应该做什么请求.


基本上:

link_to是一个生成通常在视图中使用的URL的辅助方法(.html.erb文件)

渲染告诉控制器渲染视图而不将任何数据(例如,从表单)传递到下一个控制器操作.

redirect_to执行302页面重定向,将数据(例如,从表单)传递到Web应用程序上的控制器操作或外部应用程序(例如:google,facebook,您喜欢的Web文章等)