Rails form_for как заставить форму генерировать путь без модуля?

Здравствуйте
Модель:
class Core::Contractor < ActiveRecord::Base
end

Маршрут:
scope module: :core do
    resources :contractors
  end

Сделал специально, чтобы в url не отображалось /core
Вьюха:
= form_for @contractor, :html => { :class => "form-horizontal" } do |f|
  .form-group
    = f.label t(:name), :class => 'control-label col-md-2'
    .col-sm-3
      = f.text_field :name, :class => 'text_field form-control'
  .form-group
    .col-md-offset-2.col-sm-3
      =' f.button t(:save), :class =>'btn btn-primary', :disable_with => t(:please_wait)
      = link_to t(:cancel), contractors_path, :class => 'btn btn-default'

Ругается:
undefined method `core_contractors_path' for #<#<Class:0xaa56f54>:0xafc7b00>

Я так понимаю этот путь генерит сама форма. Я конечно могу прописать так:
= form_for @contractor, url: contractors_path, :html => { :class => "form-horizontal" } do |f|

Но это сработает только на create действие, на update путь то уже другой. Не хоетось бы делать две вьюхи с формой(одну для new другую для edit). Можно ли что то прописать в самом хелпере чтобы он сгенерировал путь как надо?
  • Вопрос задан
  • 2318 просмотров
Решения вопроса 1
viktorvsk
@viktorvsk
Если вариации с
= form_for [:core, @ contractor] do |f|
не помогут
То я бы делал так:
url: (@ contractor.persisted? ? contractor_path(@ contractor) : contractors_path, method: (@ contractor.persisted? ? :put : :post)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы