添加到关系数据库rails

时间:2013-03-21 11:00:02

标签: ruby-on-rails database rails-activerecord

我有两个型号的地址模型

class Address < ActiveRecord::Base
attr_accessible :address1, :address2, :country, :county, :customer_id, :town
belongs_to :customer    
end

和客户模型

class Customer < ActiveRecord::Base
attr_accessible :email, :firstname, :lastname, :password, :phone
has_one :address

end

我有使用脚手架生成的CRUD功能。我想要做的是当我添加新客户时,我可以从文件中的地址为客户选择地址或选择无地址。我可以使用此功能查看客户及其地址。

def showaddress
@customer = Customer.find(params[:id])
@address = @customer.address
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @customer }
end
end

这是我用来创建新客户的当前控制器

def new
@customer = Customer.new

respond_to do |format|
  format.html # new.html.erb
  format.json { render json: @customer }
end
end

所以基本上我想要做的是当我创建一个新客户时,有一个地址下拉列表,用户可以点击该地址将该地址与客户关联

2 个答案:

答案 0 :(得分:0)

您可以在控制器中的 new 方法中初始化所有地址的变量,并在视图页面中使用该变量来填充表单中的选择框。

def new
  @customer = Customer.new
  @addresses = Address.all
  #...
end

或直接填写表格中的地址,如下所示

select_tag 'address_id', options_for_select(Address.all.collect{ |a| [a.name, a.id] })

答案 1 :(得分:0)

试试这个,

<%= select_tag :address_id, Customer.all.collect {|p| [ p.address_title, p.id ] } %>