場所にはリストがあります。場所のインデックスから、ユーザーが新しいリスト (その場所に属する) を追加し、更新されたインデックスにリダイレクトできるようにしたいと考えています。
私のルートは次のとおりです。
match 'listings/search' => 'listings#search'
resources :locations do
resources :listings
end
resources :locations
resources :listings
match "listings/:location" => 'listings#show'
リストのフォームは次のとおりです。
<%= form_for(@listing, :url=>"/locations/#{@location_id}/listings") do |f| %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
lists_controller で create メソッドを呼び出す必要があると思います。
def create
@location= Location.find(params[:location_id])
@location_id = @location.id
@listing = @location.listings.create(params[:listing])
respond_to do |format|
if @listing.save
redirect_to location_listings_path(@location_id)
else
format.html { render action: "new" }
end
end
end
送信を押すと、まさに私が望む /locations/1/listings にリダイレクトされます。でも窓は真っ白。更新を押すと (ロケーション/1/リストにいつでもアクセスできます)、インデックスが正しく表示されます。