ruby-on-rails - Rails fields_for 表单未显示

标签 ruby-on-rails ruby ruby-on-rails-3

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

折扣.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 block 中的内容不显示。但是,如果我将 has_many :discounts 更改为 has_many :discount,则会显示该表单(尝试提交时出现质量分配错误)。

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

最佳答案

您想要许多折扣还是一个折扣?

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

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

否则,如果您只想要一个折扣,请更改以下内容:

f.fields_for :discount do |discount_form|accepts_nested_attributes_for :discount 为单数。

@products.discounts.build 将不起作用,因为您无法从对象集合中获得关联。例如:

@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

关于ruby-on-rails - Rails fields_for 表单未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16027066/

相关文章:

ruby-on-rails - Rails - ActionMailer 有时会在电子邮件内容之前显示附件?

ruby-on-rails - rbenv 在 Ubuntu 14.04 上构建失败。必须使用 ruby​​ 2.0.0-p451

ruby-on-rails - 为什么结果返回十六进制而不是实际值?

ruby-on-rails - 无法将 Rails 应用程序推送到 Heroku

ruby-on-rails - Ruby On Rails 开发机

ruby-on-rails - 如何使用同一张表为一组模型创建装饰器?

arrays - Rails 3 检索所有曾孙记录作为 ActiveRecord 集合

mysql - 如何在 AREL 查询中使用别名引用子查询?

ruby - Test::Unit 是否仍然与 Rails 相关?

ruby-on-rails - Twitter Rails gem Update_with_media 返回未经授权