私はこのルートを持っています:
# config/routes.rb
map.namespace :backshop, :path_prefix => '/:shop_id/admin' do |backshop|
backshop.resources :items
end
そして、form_forマジックを使用して、新しいビューと編集ビューの両方で同じフォームを再利用したいと考えています。
<% form_for [:backshop, @item] do |f| %>
これは以前は機能し、@item オブジェクトのステータスに応じて、アイテムの作成 URL またはアイテムの更新 URL を構築するために使用されていました。
しかし、 shop_idパラメーターなしではルートが存在しないため、これはこのケースでは機能しません。また、 form_forに次のように言う方法がわかりません。
<% form_for [:backshop, @item], :shop_id => @shop do |f| %>
:shop_idパラメータのように@itemを使用しようとするためです。
または、このように
<% form_for [:backshop, @shop, @item] do |f| %>
この URL を構築しようとするため:
backshop_shop_order_path
パーシャルからform_for宣言を抽出し、 newかeditかによって異なる呼び出しを行うことができることを私は知っています:
<% form_for( @item, :url => backshop_items_path( @shop ) ) do |f| %>
と
<% form_for( @item, :url => backshop_item_path( @shop, @item ) ) do |f| %>
しかし、私はたくさんのモデルを持っていて、いくつか退屈なので、これをしたくありませんでした:)
提案をありがとう
f.