加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Ruby on Rails:“form_for(:product,…)”和

发布时间:2020-12-17 03:34:18 所属栏目:百科 来源:网络整理
导读:是 %= form_for(:product,:url = {:action = 'update',:id = @product.id})) do |f| % ...% end % 和 %= form_for(@product,:id = @product.id})) do |f| % ...% end % 完全相同的 ? 解决方法 form_for帮助程序中的@product附带了更多功能. :product仅影响

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

<%= form_for(@product,:id => @product.id})) do |f| %>
  ...
<% end %>

完全相同的 ?

解决方法

form_for帮助程序中的@product附带了更多功能.

:product仅影响输入字段的id和名称.例如,您在表单中提交了一个文本:

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

生成的html看起来像:

<input type="text" id="product_price" name="product[price]" />

id和name值由:product.to_s和文本字段名称确定.

如果你使用@product,则:url不是必需的,因为url将根据@产品的状态确定:

>如果@product是新记录,则该网址将发布以进行创建
>否则,该网址将发布更新

输入字段的id和名称受@ 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和input字段的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读