Rails总是使用表单中的name="example"
映射模型属性名称吗?
这意味着表单字段上的name属性始终严格匹配ActiveRecord模型映射到的db列名?
例如,在我的代码中
<%= form_for(@property, :url => landlord_properties_path(current_landlord),:html => {:class => 'form-horizontal'}) do |f| %>
<%= render 'shared/error_messages' , object: f.object %>
<div class="form-group selection property type">
<%= f.text_field :locality, 'name'=>"locality" %>
<%= f.text_field :country, 'name'=>"administrative_area_level_1" %>
<%= f.submit "add", class: "btn btn-s-md btn-success pull-right" %>
<% end %>
我的AR中有一个名为:locality的属性,它与我的db列名:locality匹配。
我还有一个名为country的属性:country,但是由于在表单中,名称被重写为'name'=>"administrative_area_level_1"
,所以数据似乎没有传递给AR。
我正在重写这个名称,因为我使用的是Geocomplete,而这些名称字段用于进行google调用。在数据库中使用'name'=>"administrative_area_level_1"
确实不方便。
这是我对属性的强参数方法
def property_params
params.permit(:postal_code,:place_id,:country,:locality)
end
这个当前不工作,没有值被传递到:country
如果我将:administrative_area_level_1
添加到params.permit中,那么rails就会抱怨
unknown attribute: administrative_area_level_1
我猜是因为我的数据库里没有。
有没有办法让我把name= administrative_area_level_1
字段映射到我的应用程序中的:country列?
发布于 2015-03-16 07:55:46
在您的模型中,可以定义以下方法:
def administrative_area_level_1=(input)
self.country = input # Or do what ever you want with the input to map it to country
end
https://stackoverflow.com/questions/29081178
复制相似问题