这是我的表格
<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 :(得分:0)
在您的模型中,您可以编写类似 -
的方法def full_address
"#{self.address_1}, #{self.address_2}, #{self.city}"
end
然后,在您的控制器或视图中,您只需在模型的实例上应用此方法即可。在rails控制台中尝试此操作以查看结果。
user = User.first #assuming all your fields are stored inside user model
puts user.full_address
因此,您不需要再次保存整个地址。您可以随时调用full_address
方法,甚至可以在视图中调用以获取完整地址。
答案 1 :(得分:0)
您可以通过以下方式实现
模型中没有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