如何在fields_for之外放置属性?

时间:2012-01-04 17:17:06

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 nested-forms

我有2个型号:

class Store < ActiveRecord::Base
  attr_accessible :prices_attributes, :business_name
  has_many :prices
  accepts_nested_attributes_for :prices
end

class Price < ActiveRecord::Base
  attr_accessible :price, :product_name, :purchase_date
  belongs_to :store
end

我正在创建商店和价格,使其成为嵌套形式:

class StoresController < ApplicationController
  def new
    @store = Store.new
    3.times {@store.prices.build }
  end
end

嵌套表格:

<%= form_for @store do |f| %>

  <%= f.text_field :business_name %>

  <%= date_select("price", "purchase_date")  %>

  <%= f.fields_for :prices do |up| %>
    <%= up.text_field :product_name %>
    <%= up.text_field :price %>
  <% end %>
<% end %>

我想将purchase_date放在f.fields_for之外,因此用户只需为所有价格选择一个date_select。但这不起作用。 purchase_date未显示在表单上。我怎么能这样做呢?

1 个答案:

答案 0 :(得分:1)

如果子窗体显示purchase_date和购买的输入 - 并且您希望根据父窗体中的输入值设置这些输入的值 - 您将不得不在客户端编写脚本(javascript / jquery)所以孩子的值被设置以响应父输入的改变事件(或类似)。

如果子窗体不显示这些输入,则必须根据父级的属性(如果选择将它们添加到父级)或使用子级属性在服务器端(模型或控制器)设置子级属性。请求发送的params。