Эй, у меня есть куча форм для разных контроллеров на одной странице. Это потому, что theres куча моделей, которые складываются друг на друга, и это лучший способ их редактировать.Rails 2.3.8 form_for partials не генерирует правильный URL-адрес действия
Я использую партиалы, чтобы включить каждую форму в поле зрения, передавая местные жители для объекта и URL-адрес Params, которые будут использоваться form_for
первый (верхний уровень) образуют частичный:
- form_for :person, local_assigns[:obj], :url => local_assigns[:url] do |person_form|
= person_form.error_messages
%p
= person_form.label :first_name
= person_form.text_field :first_name
%p
= person_form.label :last_name
= person_form.text_field :last_name
%p
= person_form.submit 'Save'
- if local_assigns[:obj]
= link_to 'Destroy', local_assigns[:obj], :confirm => 'Are you sure?', :method => :delete
который входит в поле зрения с помощью
= render :partial => 'person_form', :locals => { :url => { :controller => 'people', :action => 'create' }, :obj => @person }
создать новый человек, и
= render :partial => 'person_form', :locals => { :url => "people/update/#{person.id}", :obj => person }
в этом блоке:
- Person.all.each do |person|
редактировать все существующие люди.
Моя проблема заключается в том, что каждая форма, исключая первого (верхнего уровня) человека, создает и редактирует формы, действие устанавливается на текущий контроллер.
The form_for частичным для всех других форм очень похож:
- form_for :day, local_assigns[:obj], local_assigns[:url] do |day_form|
= day_form.error_messages
%p
= day_form.label :effective_date, 'Date'
= day_form.datetime_select :effective_date
= day_form.label :person_id
= day_form.collection_select(:person_id, Person.all, :id, :full_name, { :selected => local_assigns[:ref] ? local_assigns[:ref].id : 1 })
%p
= day_form.submit 'Save'
- if local_assigns[:obj]
= link_to 'Destroy', local_assigns[:obj], :confirm => 'Are you sure?', :method => :delete
включен через
= render :partial => 'day_form', :locals => { :url => { :controller => 'days', :action => 'create' }, :obj => @day, :ref => person }
для создания формы и
= render :partial => 'day_form', :locals => { :url => "days/update/#{day.id}", :obj => day, :ref => person }
для редактирования форм.
Две модели, Person and Day, соединены вместе лицом, имеющим много дней и дней, принадлежащих: лицу. Все ассоциации настроены правильно и работают, проблема заключается в рендеринге всех форм с разными контроллерами для создания правильного URL-адреса действия.
Любые предложения?
(я использую HAML кстати)
http://pastie.org/1124904, HTTP: //pastie.org/1124916 Продемонстрируйте правильный способ делать то, что я пытаюсь выполнить. Контроллер может выглядеть как def update; гараж = Garage.find (params [: id]); garage.update (params [: garage]); end – jvatic