http://blog.csdn.net/abbuggy/article/details/7636462
《Ruby on Rails,通过建立页面导航链接实现页面跳转》中,我们了解到如何通过link_to(text,target)方法在Templates中定义连接。其中参数target以填入了两个最终要的参数,Controller和Action。如果有一个分页显示的列表,我们希望希望查看其中的第3页,这个信息如何传递至Controller,Controller又如何访问传递过来的信息呢?以这个连接为例
/demo/hello/1?page=3&per_page=10
{:controller =>'demo',:action => 'index',:page =>3 :per_page =>10}
先向Template里的link中传入参数信息。
<h1>Demo#hello</h1> <p>Hello Page!</p> <%= link_to("link with params",{:controller =>'demo',:action => 'index',:page =>3 ,:per_page =>10})%> <p>Find me in app/views/demo/hello.html.erb</p>
接下来是如何获取链接中的参数。从View和Controller中都可以得到参数值,但一般来说这些值是由Controller读取的。
看看如何在Templates中读取参数方法如下
<h1>Demo#index</h1> <p>Index Page!</p> Perpage:<%= params[:per_page]%> Page:<%= params[:page]%> <p>Find me in app/views/demo/index.html.erb</p>
浏览器的地址栏中显示链接的URL,页面上显示了从params中读取到的内容。
在Controller中读取参数存到实例变量中,Template可以通过实例变量获取数据并根据这些数据进行计算。
class DemoController < ApplicationController def index @per_page=params[:per_page] @page=params[:page] @[email protected]_i+1 end end
<h1>Demo#index</h1> <p>Index Page!</p> Perpage:<%= @per_page%></br> Page:<%= @page%></br> Nexe Page:<%= @next_page %></br> <p>Find me in app/views/demo/index.html.erb</p>
最后,还有一个比较好的调试手段分享一下,就是通过增加打印来查看params中的值
<h1>Demo#index</h1>
<p>Index Page!</p>
Perpage:<%= @per_page%></br>
Page:<%= @page%></br>
Nexe Page:<%= @next_page %></br>
<p>Find me in app/views/demo/index.html.erb</p>
<hr/>
<%= params.inspect %>
http://blog.csdn.net/abbuggy/article/details/7636462