Ruby on Rails中fields_for表单为何不显示?

2026-04-11 17:001阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计301个文字,预计阅读时间需要2分钟。

Ruby on Rails中fields_for表单为何不显示?

rubyproducts_controller.rbdef new @product=Product.new @product.build_discountend

product.rbclass Product

discount.rbclass Discount products_controller.rb

def new @product = Product.new @product.build_discount end

product.rb

has_many :discounts, :dependent => :destroy accepts_nested_attributes_for :discounts attr_accessible :discounts_attributes

discount.rb

belongs_to :product

_edit_product.html.erb

<%= form_for(product, :html => { :multipart => true }, :remote => true) do |f| %> // STUFF <%= f.fields_for :discounts do |discount_form| %> //does not show up <% end %> <% end %>

fields_for块中的内容未显示.但是,如果我将has_many:discount更改为has_many:discount,则表单显示(当我尝试提交时获取批量分配错误).

关于为什么表单不在fields_for块中呈现以及为什么在我更改复数时它会呈现的任何想法?

你想要很多折扣或一个折扣吗?

@ product.build_discount用于has_one关联,但其余代码用于has_many

如果您想要很多折扣,请将其更改为@ product.discounts.build

否则,如果您只想享受一次折扣,请更改以下内容:

f.fields_for:discount do | discount_form |和accepts_nested_attributes_for:单数折扣.

@ products.discounts.build将无法工作,因为您无法从对象集合中获取关联.例如:

Ruby on Rails中fields_for表单为何不显示?

@products = Product.all @discount = @products.discounts.build # This won't work! You'll get an error @product = Product.find(params[:id]) @discount = @product.discounts.build # This will work, since you're running it on a single instance of Product

本文共计301个文字,预计阅读时间需要2分钟。

Ruby on Rails中fields_for表单为何不显示?

rubyproducts_controller.rbdef new @product=Product.new @product.build_discountend

product.rbclass Product

discount.rbclass Discount products_controller.rb

def new @product = Product.new @product.build_discount end

product.rb

has_many :discounts, :dependent => :destroy accepts_nested_attributes_for :discounts attr_accessible :discounts_attributes

discount.rb

belongs_to :product

_edit_product.html.erb

<%= form_for(product, :html => { :multipart => true }, :remote => true) do |f| %> // STUFF <%= f.fields_for :discounts do |discount_form| %> //does not show up <% end %> <% end %>

fields_for块中的内容未显示.但是,如果我将has_many:discount更改为has_many:discount,则表单显示(当我尝试提交时获取批量分配错误).

关于为什么表单不在fields_for块中呈现以及为什么在我更改复数时它会呈现的任何想法?

你想要很多折扣或一个折扣吗?

@ product.build_discount用于has_one关联,但其余代码用于has_many

如果您想要很多折扣,请将其更改为@ product.discounts.build

否则,如果您只想享受一次折扣,请更改以下内容:

f.fields_for:discount do | discount_form |和accepts_nested_attributes_for:单数折扣.

@ products.discounts.build将无法工作,因为您无法从对象集合中获取关联.例如:

Ruby on Rails中fields_for表单为何不显示?

@products = Product.all @discount = @products.discounts.build # This won't work! You'll get an error @product = Product.find(params[:id]) @discount = @product.discounts.build # This will work, since you're running it on a single instance of Product