Ruby on Rails:在form_for中作为参数的符号

glm*_*ndr 7 ruby-on-rails form-for

我理解form_for在执行以下操作时传递给方法的内容:

<% form_for(@user) do |f| %> ... <% end %>
Run Code Online (Sandbox Code Playgroud)

if @user在控制器中设置.这很明显.

但是:user,正如我在许多例子中看到的那样,当我们通过时会发生什么?

<% form_for(:user) do |f| %> ... <% end %>
Run Code Online (Sandbox Code Playgroud)

我什么时候应该使用符号版本?

mar*_*cgg 8

使用该符号将生成:

<form action="/users" method="post">
Run Code Online (Sandbox Code Playgroud)

使用@user设置为new的对象,您将获得:

<form action="/users/create" class="new_user" id="new_user" method="post">
Run Code Online (Sandbox Code Playgroud)

如果你将@user设置为其他东西,它将改变生成的表单标签,当然......自己尝试一下.

最后,这一切都取决于你想要做什么.如果您在同一页面上有多个:用户表单,则可能需要使用该符号.