rails 4中form_for helper的自定义名称属性

时间:2015-03-15 01:23:42

标签: ruby-on-rails forms

我正在使用geocomplete插件在我的表单中自动填写地址表单。

地理填充仅识别具有设置名称属性的表单字段,例如

  <input name="lat" class="lat" type="text" value="">
  <label>Longitude</label>
  <input name="lng" class="lng" type="text" value="">
  <label>GPS</label>
  <input name="location" type="text" value="">

另外,它不能找到给定形式的字段来完成。

下面是rails 4中的表单

<%= form_for(@property, :url => landlord_properties_path(current_landlord)) do |f| %>
    <div class="form-group selection property type">
      <%= f.text_field :name,class: "geocomplete" %>
      <%= f.text_field :lng,class: "lng" %>
      <%= f.hidden_field :lat,class: "lng" %>
      <%= f.submit "add" %>
<% end %>

然而,生成的HTML具有嵌套属性,如

<input class="lng" id="property_lng" name="property[lng]" type="text">

将属性添加到属性中,因此geocomplete将无法找到该表单。

如何自定义name属性

name ="lng" 

仍然将属性发送到当前的@property对象并将其传递给控制器​​?

编辑

因此解决方案是将'name'=>'lng'添加到文本字段,这非常有效!

但是,现在属性没有超过强参数

这是property_params

def property_params
   params.require(:property).permit(:name,:lat,:lng)
end

以下是传递给表单参数

的内容
 Parameters: {"utf8"=>"✓", "authenticity_token"=>"uXfT7XUZBuedbfAj8OaDMT673txmk379BM5PENQBRsk=", "property"=>{"name"=>"100 Kent Street, Ottawa, ON, Canada", "lat"=>""}, "lng"=>"-75.70343909999997", "commit"=>"add", "dependent"=>:destroy, "landlord_id"=>"1"}

似乎属性是包含值的哈希,但是lng现在是属性哈希之外的单独事物,因此它不会写入数据库

如何设置自定义参数让lng进入属性控制器对象?

1 个答案:

答案 0 :(得分:4)

将此添加到f.text_field:

'name'=>"lng"