2016-06-11 95 views
1

這裏是我的形式如何連接內Rails的模型多個域值

<div class="field"> 
    <%= f.label :address_1 %><br> 
    <%= f.text_field :address_1 %> 
    </div> 
    <div class="field"> 
    <%= f.label :address_2 %><br> 
    <%= f.text_field :address_2 %> 
    </div> 
    <div class="field"> 
    <%= f.label :city %><br> 
    <%= f.text_field :city %> 
    </div> 
    <div class="field"> 
    <%= f.label :state %><br> 
    <%= f.text_field :state %> 
    </div> 
    <div class="field"> 
    <%= f.label :zip %><br> 
    <%= f.text_field :zip %> 
    </div> 
    <div class="field"> 
    <%= f.label :country %><br> 
    <%= f.text_field :country %> 
    </div> 

這就是我要與輸入做值

:address_1 + :address_2 + :city + :state + :country 

我曾嘗試沒有成功以下

"#{address_1} #{address_2} #{city} .etc" 

我想加入位置模型中更準確地理編碼的輸入值

class Location < ActiveRecord::Base 
    geocoded_by :address_1 <--- should be the ":address_1 + :address_2 + :city + :state + :country" value 
    after_validation :geocode 

end 

如何在模型中連接這些值以便用於這種情況? 感謝

+0

控制人你有軌地址存儲在表中的字段,並且要輸出串聯? – Kumar

回答

0

在你的模型,你可以寫等的方法 -

def full_address 
    "#{self.address_1}, #{self.address_2}, #{self.city}" 
end 

然後在您的控制器或查看你可以簡單地應用此方法對您的模型的實例。在您的導軌控制檯中試試看看結果。

user = User.first #assuming all your fields are stored inside user model 
puts user.full_address 

所以用這種方法,你不需要再保存整個地址。即使在您的意見中,您也可以隨時致電full_address方法獲取完整地址。

0

可以在模型做它在以下方面

  1. 化妝地址 - >這是最好的方式控制
  2. 化妝地址 - >這是很好的方式

模式中沒有1號

attr_accessor :address_1, :address_2, :city, :state, :country 

def before_save 
    self.address = @address_1 + " " + @address_2 + " " + @city + " " + @state + " " + @country 
end 
in controller 

def save 
    person = Person.new() 
    person.address_1 = params[:address_1] 
    person.address_2 = params[:address_2] 
    person.city = params[:city] 
    person.state = params[:state] 
    person.country = params[:country] 
    person.save 
end 

路2號例如模型人和控制器

def save 
    person = Person.new 
    person.address = params[:address_1] + " "params[:address_2] + " " params[:city] + " " + params[:state] + " " + params[:country] 
    person.save 
end