'update', :id => @product.id})) do |f| %> ... 和 {:action => 'update', :id => @pro-6ren">
gpt4 book ai didi

ruby-on-rails - Ruby on Rails : Are "form_for(:product, ...)" and "form_for(@product, ...)" equivalent?

转载 作者:行者123 更新时间:2023-12-04 17:58:07 33 4
gpt4 key购买 nike


<%= form_for(:product, :url => {:action => 'update', :id => @product.id})) do |f| %>
...
<% end %>


<%= form_for(@product, :url => {:action => 'update', :id => @product.id})) do |f| %>
...
<% end %>

完全相同的 ?

最佳答案

@productform_for helper 附带更多功能。
:product只影响输入字段的 id 和 name。例如,您有一个以以下形式提交的文本:

<%= form_for :product, :url => {...} do |f| %>
<%= f.text_field :price %>
<% end %>

生成的 html 看起来像:
<input type="text" id="product_price" name="product[price]" />
idname值由 :product.to_s 决定和文本字段名称。

而如果你使用 @product , :url没有必要,因为 url 将根据 @product 确定的状态:
  • 如果@product是新记录,url 将发布到 create
  • 否则,该 url 将发布到 update

  • 并且输入字段的 id 和 name 受 @product 影响。的类名,因此在使用单表继承时很重要。输入字段的值自动分配为 @product的属性值。所以如果你使用 @product , html 输出将如下所示:
    <input type="text" id="product_price" name="product[price]" value="some value" />

    假设 @product的类名是 Item ,那么输出将更改为:
    <input type="text" id="item_price" name="item[price]" value="some value" />

    当然,您可以同时使用 :product@product :
    <%= form_for :product, @product do |f| %>
    :product控制输入​​字段的名称和 ID,以及 @product控制 url 和输入字段的值。

    关于ruby-on-rails - Ruby on Rails : Are "form_for(:product, ...)" and "form_for(@product, ...)" equivalent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436817/

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