gpt4 book ai didi

ruby-on-rails - 如何将 ActiveRecord 对象作为参数传递给 Rails 中的辅助方法

转载 作者:行者123 更新时间:2023-12-04 19:35:39 26 4
gpt4 key购买 nike

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

我对如何扩展不同的参数样式以返回 url 感到困惑。我知道遵循 REST 约定应该创建一个由 Controller 和操作构成的 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|

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

最佳答案

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

唯一“奇怪”的是 form_for :post 变体。这是老派的 Rails 语法,并将其更改为底层的 form_for @post 语法。

关于ruby-on-rails - 如何将 ActiveRecord 对象作为参数传递给 Rails 中的辅助方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com