嘿,我有一堆窗体,用于不同的控制器都在同一页上。这是因为它们堆叠在一起,这是编辑它们的最佳方式。Rails 2.3.8 form_for partials不会产生正确的动作url
我使用泛音包括的每个形式进入视图,传递当地人为对象和网址参数通过的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|
编辑现有的所有的人。
我的问题是,除了第一个(顶级)人员创建和编辑表单之外,每个表单都会将操作设置为当前控制器。
所有其他形式的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 }
的编辑形式包括在内。
这两个模型,人和日,由具有许多人:天和天属于:人连接在一起。关联设置正确且工作正常,问题是使用不同控制器渲染所有表单以生成正确的动作url。
有什么建议吗?
(我使用haml btw)
http://pastie.org/1124904,HTTP: //pastie.org/1124916演示正在尝试完成的正确方法。控制器可能看起来像def update; garage = Garage.find(params [:id]); garage.update(params [:garage]); end – jvatic 2010-08-29 22:29:29