0

ネストされたフォームを使用する Rails アプリケーションがあります。詳細は次のとおりです。この解決策を試しました ( Rails 3 Nested Models unknown attribute Error )が、何らかの理由で、オプションを正しく一覧表示して保存する代わりに、フィールドが複数回繰り返されます。よろしくお願いします。

Newsavedmaps のモデル情報

has_many :waypoints, :dependent => :destroy
accepts_nested_attributes_for :waypoints

Newsavedmap_controller

def new
  @newsavedmap = Newsavedmap.new
  waypoint = @newsavedmap.waypoints.build
  respond_to do |format|
    format.html # new.html.erb
    format.xml  { render :xml => @newsavedmap }
  end
end

def edit
  @newsavedmap = Newsavedmap.find(params[:id])
  if @newsavedmap.itinerary.user_id == current_user.id
    respond_to do |format|
      format.html # edit.html.erb
      format.xml  { render :xml => @activity }
    end  
  else
    redirect_to '/'
  end
end

マップリー ビュー

<% form_for @newsavedmap, :html=>{:id=>'createaMap'} do |f| %>
  <%= f.error_messages %>
  <% f.fields_for :waypoint do |w| %>
    <%= w.select :waypointaddress, options_for_select(Waypoint.find(:all, :conditions => {:newsavedmap_id => params[:newsavedmap_id]}).collect {|wp| [wp.waypointaddress, wp.waypointaddress] }), {:include_blank => true}, {:multiple => true, :class => "mobile-waypoints-remove", :id =>"waypoints"} %>
  <% end %>
<% end %>

上記のコードを使用すると、フォームは正しく機能しますが、送信すると次のエラーが発生します。

UnknownAttributeError (unknown attribute: waypoint)

":waypoint do |w|" を変更すると 「:waypoints do |w|」へ ビューでは、ユーザーが新しいレコードを作成しているときに選択フィールドが消え、編集ビューでは、選択フィールドが数回表示されます (ユーザーがレコードに保存したウェイポイントの数に関係なく)。

このフォーム フィールドを正しく機能させるにはどうすればよいですか?

編集1

これが私の最新の試みです。新しいレコードの場合、選択フィールドは表示されません。ただし、編集ビューでは、選択フィールドが複数回表示されます。これは Rails 2 アプリケーションです。参考までに。コメントからヒントを得て、collection_select アプローチを使用しました (そのためのドキュメントが見つからなかったため、collection_for_select ではありません)。

    <% f.fields_for :waypoints do |w| %> 
        <%= w.collection_select( :waypointaddress, @newsavedmap.waypoints, :waypointaddress, :waypointaddress, {:include_blank => true}, {:id =>"waypoints"} ) %>
        <% end %>
4

1 に答える 1