Rails可能的函数参数

问题描述 投票:1回答:3

我是Rails的新手,想要改进我的工作流程。我想知道在哪里可以查找一般轨道功能的可能功能参数。例如:

我想使用render函数。我能通过哪些论据?

为了回答这个问题,我去了api.rubyonrails.org。但这只告诉我函数签名:

render(*args, &block)

而且我现在不比以前更多。

为了获得更多信息,我通读了关于布局和渲染的Ruby on Rails指南(这很棒)。但即使我找到了我想要的东西,也不能快速查找可能的选项。我正在寻找更简洁的东西。

我怎么知道我可以传递像:partial:layout这样的函数?

查看实际的源代码是另一种选择。但这也不是很方便。

这个render函数只是一个例子。在我想要使用函数的几个地方发生了这种情况,并且找不到它实际上能够做什么的良好文档。

ruby-on-rails ruby
3个回答
0
投票

您可以将要呈现的部分名称作为参数传递,如下所示:

<%= render :partial => 'partial_name' %>

或者您可以传递如下的参数:

<%= render :partial => 'users', :collection => @users, :locals => {:size => 30} %>

希望这可以帮助。


0
投票

我们可以使用Ruby的反射功能来获取方法的参数列表(预期参数):

AbstractController::Rendering.instance_method(:render).parameters
# Output: [[:rest, :args], [:block, :block]]

输出由符号对组成。在每对中,第一个符号告诉我们参数的类型(必需,可选,休息,块),第二个符号显示参数的名称。

至于参数的类型:

  • :req是必需参数
  • :rest是可变参数
  • :opt是可选参数
  • :block是块参数

有关参数类型的更多信息,请参见this post at the Zen Ruby blog


0
投票

渲染部分,你可以通过

<%= render :partial => 'client', :collection => @users, :as => :client, :locals => {:optional => true} %>

哪里:

:partial你可以将名称或路由传递给部分,如“user”或“folder / user”

:collection例如,如果你在@user中有一个用户列表,那么使用这个参数,当部分中有很多用户时,将重复这个部分。

:as如果你传递一个集合,如果模型是User,则自动将用户“user”作为局部变量,但如果你需要另一个局部变量用于示例中的部分客户端,则传递该参数的每个部分的名称集合。所以你可以说client.name而不是user.name

:locals如果你想将局部变量传递给局部变量,就像你在部分中有一个验证if optional然后你以这种方式传递值,正如你在{}中看到的那样,你可以使用逗号传递多个。

© www.soinside.com 2019 - 2024. All rights reserved.