• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

RubyonRails,通过页面链接向Controller中传递参数,附赠调试技巧 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

《Ruby on Rails,通过建立页面导航链接实现页面跳转》中,我们了解到如何通过link_to(text,target)方法在Templates中定义连接。其中参数target以填入了两个最终要的参数,Controller和Action。如果有一个分页显示的列表,我们希望希望查看其中的第3页,这个信息如何传递至Controller,Controller又如何访问传递过来的信息呢?以这个连接为例

 

/demo/hello/1?page=3&per_page=10

 

这是标准的HTML参数格式,问号后面通过&分割的是参数名/值对,其中等号前面的page和per_page是希望传递参数名,等号后面是参数的值。我们需要做的就是向创建连接参数的方法中传入这些信息,很简单只要按照名/值对的形式加入到参数列表中即可。 

 

 

{:controller =>'demo',:action => 'index',:page =>3 :per_page =>10}

 

当Rails建连接时,按照顺序查看各个参数的值。首先查看指向的Controller的名字用“controller”表示,如果没有指定则缺省为当前页面对应的Controller。Action名字用“action”表示,如果没有定义Action名字,则缺省为当前页面对应的Action。id也作为标准参数的一部分使用“id”表示,之外的就是附加的参数。所有这些都会被放入params列表中,后面的程序就从params中获取从link中携带过来的信息。 

 

先向Template里的link中传入参数信息。

 

#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>

 

打开页面可以看到,当鼠标悬停在链接上方时浏览器提示链接指向的URL就是我们想要的一致。 

 

接下来是如何获取链接中的参数。从View和Controller中都可以得到参数值,但一般来说这些值是由Controller读取的。

看看如何在Templates中读取参数方法如下

 

> <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可以通过实例变量获取数据并根据这些数据进行计算。

 

< ApplicationController def index @per_page=params[:per_page] @page=params[:page] @[email protected]_i+1 end end

 

Template稍作修改,不直接从params中读取而是从Controller的实例变量中读取,因为实际应用中这些数据将是经过计算的结果值。
#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中的值

 

> <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 %>

 

params.inspect方法会打印出其中所有内容以便查看。 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ruby基础知识之class&amp;module发布时间:2022-07-14
下一篇:
Centos安装ruby--jekyll发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap