繁体   English   中英

如何将ActiveRecord对象作为参数传递给Rails中的Helper方法

[英]How to Pass ActiveRecord Objects as Parameters to Helper Methods in Rails

许多辅助方法(如redirect_to,link_to和url_for)可以将ActiveRecord对象作为参数,而不是指定控制器和操作的哈希。 我已经看到参数在不同的文档中传递了不同的方式。 它有时作为符号传递,有时作为实例变量传递,有时作为局部变量传递。

我对如何扩展不同参数样式以返回URL感到困惑。 我知道遵循REST约定应该创建一个由控制器和动作构成的url,但不确定Rails何时需要特定的参数样式来构造该url。 请帮助我理解将ActiveRecord对象作为符号,实例变量或局部变量传递的用例。 根据方法调用有不同的要求吗? 或者url构造存在潜在差异吗?

这里有些例子:

来自API文档:

link_to "Profile", @profile  
redirect_to post  
<%= url_for(@workshop) %>  
<%= form_for :person do |f| %> (this is described as the “generic #form_for”)

来自Ruby on Rails指南:

<%= link_to 'New book', new_book_path %>  
redirect_to(@book)  
form_for(@article)  

从Rails 3方式:

'link_to' "Help", help_widgets_path, :popup => 1  
redirect_to post  
url_for(timesheets_path)  
form_for offer do |f|  

注意:经过进一步研究,在调用视图模板传递:locals hash作为参数的情况下,form_for似乎能够接受局部变量。 键是可以在partial中使用的locals,值是模板中的实例变量。 这是正确的理解吗?

  • 您可以将对象传递给link_to和url_for
  • 您还可以将对象传递给路径助手
  • @postpost都是对象。 @post是一个实例变量,post是一个局部变量或一个将返回一个帖子的方法

唯一“怪异”的是form_for :post variety。 这是旧式的Rails语法,并将其更改为引擎盖下的form_for @post语法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM