gpt4 book ai didi

ruby-on-rails - 在 Rails 中,form_for 到底是什么?看起来很神奇

转载 作者:数据小太阳 更新时间:2023-10-29 08:25:12 26 4
gpt4 key购买 nike

首先,我意识到我应该在开始使用 Rails 之前尝试完全掌握 Ruby。然而,Ruby 似乎没有什么是难以快速掌握的(直到这个!),所以我决定趁着我仍然热衷于学习的时候开始学习。 ,__,

无论如何,这里有一个 form_for 的超浓缩示例:

<%= form_for(@post) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<% end %>

我明白 Ruby 中的方法不需要用括号调用。但是,form_for 是用括号调用的,但不知何故,似乎 do |f| block 正在传递给它!

form_for 是否返回一个接受 block 的方法,然后 that 方法通过传递 do |f|< 立即被调用(不带括号)/ block ?这是怎么回事?

最佳答案

Ruby 使用了很多所谓的“语法糖”,因为它在某些操作的解释方式上比其他语言更灵活一些。

例如:

model.property = "something"

实际上是一个函数调用:

model.property=("something")

您的 form_for 示例是类似的情况。 block 作为参数静默传递给 Ruby 函数。

my_block = Proc.new { some code }
my_function(param1, param2, &my_block)

相当于

my_function param1, param2 do
some code
end

my_function 的函数 def 中你可以这样写:

def my_function(param1, param2, &block)

并且您可以通过参数以及 yield 访问该 block 。

所以当你使用 block 语法时,它被解释为参数,但实际上不是。

关于ruby-on-rails - 在 Rails 中,form_for 到底是什么?看起来很神奇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4385349/

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