0

住所を作成するためのフォームがあります。この住所には座標の配列があります。しかし、たとえば3つの座標を入力するための入力を生成する方法がわかりません。n座標にすることができます.jQuery(入力の作成)でそれを行う予定です。しかし今のところ、既存の座標を表示したいと思います。

コードは次のとおりです。

モデル

class Address
    include Mongoid::Document
    include Mongoid::Timestamps
    include Mongoid::Spacial::Document

    field :street, :type => String
    field :number, :type => Integer

    field :phone, :type => String

    field :delivery_zone, :type => Array
end

erb.html

<%= form_for [:owner, :company,@address], :html => {:class => "form-horizontal"} do |f| %>
  <%= @address.delivery_zone.each do |dz|%>
    <% fields_for 'delivery_zone[]' , dz do |items| -%>

        ?? I don't know what to write here!!

    <% end %>
  <% end %>
<%end%>

私が探しているのは、フィールドdelivery_zoneと配列内の各項目について、次のようなものを生成することです。

<input id="address_delivery_zone[]"  name="address[delivery_zone][]" type="text" value="32.7 33.8" />
4

1 に答える 1

2

私は Mongoid と Mongoid::Spacial にはあまり詳しくありませんが、助けようと思います。

私があなたの問題を理解しているようaddressに、おそらく複数の が必要ですdelivery_zones。これは地理的な座標であると想定しています。次のようなことをしたほうがいいと思います:

class Address
  include Mongoid::Document
  include Mongoid::Timestamps

  field :street, :type => String
  field :number, :type => Integer
  field :phone, :type => String

  embeds_many :delivery_zones
  accepts_nested_attributes_for :delivery_zones
end

class DeliveryZone
  include Mongoid::Spacial::Document

  embedded_in :address
  field :coordinates, :type => Array, :spacial => true

  # accessors will help us manipulate the coordinates
  def latitude
    coordinates[:lat] # or coordinates[1] if you use the array
  end

  def longitude
    coordinates[:lng] # or coordinates[0] if you use the array
  end

  def latitude=( lat )
    coordinates[:lat] = lat
  end

  def longitude=( lng )
    coordinates[:lng] = lng
  end
end

form_for次に、ネストされたリソースを使用することを意図しているため、使用できますfields_for(そのままで動作することは保証されていません)。

<%= form_for @address do |address_form| %>
  <% @address.delivery_zones.each do |zone| %>
    <%= address_form.fields_for( zone ) do |zone_form| %>
       <p>Latitude :</p> 
       <p><%= zone_form.text_field :latitude %></p>
       <p>Longitude :</p> 
       <p><%= subform.text_field :longitude %></p>
  <% end %>
<% end %>

ネストされたリソース フォームの詳細については、railscasts #197およびrailscasts #75を参照してください。

于 2012-09-08T18:30:36.363 に答える