Rails可能的函数参数

时间:2016-07-06 12:24:58

标签: ruby-on-rails ruby

我对Rails很陌生并希望改进我的工作流程。我想知道在哪里可以查找一般轨道功能的可能功能参数。 E.g:

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

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

render(*args, &block)

我现在不比以前更多。

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

我怎么知道我可以将:partial:layout这样的内容传递给该函数?

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

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

希望这有帮助。

答案 1 :(得分:0)

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

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

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

至于参数类型:

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

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

答案 2 :(得分: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内进行验证那么你以这种方式传递值,正如你在{}看到的那样,你可以传递使用逗号的不止一个。