2013-11-24 3 views
-2

У меня есть одна большая модель с большим количеством полей. Я хотел бы разделить их на две отдельные страницы и редактировать их отдельно. Я бы предпочел обрабатывать части A и часть B в двух разных контроллерах.Как обновить ту же модель с помощью разных контроллеров?

В настоящее время, на странице В используются методы «Новый» и «Редактировать» в контроллере, но все же помещается в контроллер для страницы A. Я не могу заставить его использовать контроллер для страницы B. Таким образом, когда валидация не выполняется для полей на странице B, я перенаправляется на страницу A.

Это довольно странный вопрос, но если у кого-то есть какие-то советы, это было бы очень полезно.

EDIT:

В контроллере (связанный с моделью):

@modA = ModelA.new(params[:model_a]) 
@modA.id = current_user.id 

respond_to do |format| 
    if @modA.save    
    format.html {redirect_to('/model_a/new', :notice => "ModelA successfully created.") } 
    else 
    format.html {render action: 'new'} 
    end 
end 

Это в основном все, что нужно - если бы я мог перенаправить, условно, на другие контроллеры «редактировать» или «создать «действия, я бы все поставил.

+0

Просьба указать маршрут и код контроллера. –

ответ

0

Я уверен, что в ваших представлениях для новых страниц и страниц редактирования B B вы делаете что-то вроде form_for(@modA). Это автоматически использует маршруты, которые идут с этой моделью. Вы можете подтвердить это, посмотрев атрибут действия формы в источнике своих страниц в браузере.

Вместо этого, вы можете указать, какой контроллер и маршрут вы хотите использовать:

form_for(@modA, url: {controller: 'page_b', action: 'create'}) do 
    ... 

Пожалуйста, оставьте свои взгляды, если мое предположение, не то, что у вас есть, или если это предложение не поможет.

Смежные вопросы