一、has_many
#crowdfunding表的字段有
id, name, created_at, updated_at
#unit_price表的字段有
id, platform_id,crowdfunding_id,price,created_at,updated_at
#platform表的字段
id,name
model/crowdfunding.rb
has_many :unit_prices, dependent: :destroy
accepts_nested_attributes_for :unit_prices
model/unit_price.rb
belongs_to :platform
controller/crowdfunding_controller.rb
def new
@crowdfunding = Crowdfunding.new
@crowdfunding.unit_prices.build
end
def create
@crowdfunding.new(crowdfunding_params)
end
private
def crowdfunding_params
crowdfunding_fields = Crowdfunding.column_names - ['id', 'created_at', 'updated_at']
unit_prices_fields = ["platform_id", "price", "max_quantity", "min_quantity"]
params.require(:crowdfunding).permit(*crowdfunding_fields, unit_prices_attributes: unit_prices_fields)
end
crowdfunding.html.erb
<style>
.dis_no{display:none}
</style>
<% index = 1 %>
<%= f.fields_for :unit_prices do |unit_price| %>
<div class="row dis_no">
<div class="form-group required">
<%= unit_price.label '投放平台' %><br>
<%= unit_price.collection_select(:platform_id, Platform.all,:id,:name,{:include_blank => '请选择'}, {class: 'form-control mr20'}) %>
<%= unit_price.text_field :price, class: 'form-control', placeholder: '输入价格' %>
</div>
<div class="form-group required min_<%= index %>_qua">
<%= unit_price.label '最低认筹量' %><br>
<%= unit_price.number_field :min_quantity, class: "form-control" %>
<%= unit_price.label '箱', class: 'text-right col_red', style: 'flex:0 0 25px;' %><br>
</div>
<div class="form-group required max_<%= index %>_qua">
<%= unit_price.label '最高认筹量' %><br>
<%= unit_price.number_field :max_quantity, class: "form-control" %>
<%= unit_price.label '箱', class: 'text-right col_red', style: 'flex:0 0 25px;' %><br>
</div>
</div>
<% index +=1 %>
<% end %>
<script>
$(".dis_no:first").removeClass("dis_no").addClass("show");
$(".add").click(function(){
$(".dis_no:first").removeClass("dis_no");
if($(".dis_no").length == 0){
$(this).empty()
}
})
$(".btn-warning").click(function(){
var length = $(".show").length
for (var i=1;i<=length;i++){
if($(".min_"+i+"_qua").find("input").val() < 1){
alert("第"+i+"排最低认筹量不能小于1");
return false;
}
if($(".max_"+i+"_qua").find("input").val() < 1){
alert("第"+i+"排最高认筹量不能小于1");
return false;
}
if(parseInt($(".max_"+i+"_qua").find("input").val()) < parseInt($(".min_"+i+"_qua").find("input").val())){
alert("第"+i+"排最高认筹量不能小于第"+i+"排最低认筹量"); return false;
}
}
})
</script>
has_one
class User < ActiveRecord::Base
attr_accessible :email, :account_attributes
has_one :account
accepts_nested_attributes_for :account
end
class Account < ActiveRecord::Base
attr_accessible :password, :password_confirmation
has_secure_password
belongs_to :user
end
class UsersController < ApplicationController
def new
@user = User.new
@user.build_account
end
end
view
<%= form_for @user do |f| %>
email: <%= f.text_field :name %>
<%= f.fields_for :account do |account_form| %>
password: <%= account_form.password_field :password %>
password_confirmation: <%= account_form.password_field :password_confirmation %>
<% end %>
<% end %>