У меня есть этот маршрут:
# config/routes.rb
map.namespace :backshop, :path_prefix => '/:shop_id/admin' do |backshop|
backshop.resources :items
end
И я хочу использовать магию form_for , чтобы повторно использовать одну и ту же форму в обоих: new и edit views:
<% form_for [:backshop, @item] do |f| %>
Это работало и использовалось для создания URL создания для элемента или URL обновления для элемента в зависимости от состояния @ item объект.
Но это не работает в этом случае, потому что маршруты не существуют без параметра shop_id , и я не знаю, как сказать form_for что-то вроде этого :
<% form_for [:backshop, @item], :shop_id => @shop do |f| %>
Поскольку он пытается использовать @ item как параметр : shop_id .
или вот так
<% form_for [:backshop, @shop, @item] do |f| %>
Поскольку он пытается построить этот URL:
backshop_shop_order_path
Я знаю, что могу просто извлечь form_for декларацию из частичного и сделать разные вызовы в зависимости от того, * новый или редактировать :
<% form_for( @item, :url => backshop_items_path( @shop ) ) do |f| %>
и
<% form_for( @item, :url => backshop_item_path( @shop, @item ) ) do |f| %>
Но я просто хотел не делать этого, потому что у меня есть куча моделей, и это немного скучно :) 1052 *
Спасибо за любые предложения
е.