2010-05-19 41 views
2

我正在使用rails3 beta3和couchdb通過couchrest。我沒有使用活動記錄。如何防止軌道處理編輯字段_對於不同的新字段_對於

我想添加多個「部分」到「指南」,並通過一個小小的JavaScript動態添加和刪除部分。我已經看過瑞安貝茨的所有截屏視頻,他們都非常幫助。唯一的區別是我想將所有部分保存爲一個部分數組而不是單個部分。基本上是這樣的:

"sections" => [{"title" => "Foo1", "content" => "Bar1"}, {"title" => "Foo2", "content" => "Bar2"}] 

所以,基本上我需要參數哈希看起來像是當表單提交。當我創建我的形式我做了以下內容:像這樣

<%= form_for @guide, :url => { :action => "create" } do |f| %> 
    <%= render :partial => 'section', :collection => @guide.sections %> 
    <%= f.submit "Save" %> 
<% end %> 

而且我的部分局部外觀:

<%= fields_for "sections[]", section do |guide_section_form| %> 
    <%= guide_section_form.text_field :section_title %> 
    <%= guide_section_form.text_area :content, :rows => 3 %> 
<% end %> 

好,所以當我創建節中的指導,這是工作完美,因爲我想。 params散列給我一個截面數組,就像我想要的一樣。問題來了,當我想編輯指南/節並再次保存它們,因爲軌道插入指南的id在每個表單字段的id和名稱,這是在表單提交上搞砸了params散列。

只是要清楚,這裏是一個新的資源的原始形式輸出:

<input type="text" size="30" name="sections[][section_title]" id="sections__section_title"> 
<textarea rows="3" name="sections[][content]" id="sections__content" cols="40"></textarea> 

,這裏是什麼樣子編輯現有的資源時,如:

<input type="text" value="Foo1" size="30" name="sections[cd2f2759895b5ae6cb7946def0b321f1][section_title]" id="sections_cd2f2759895b5ae6cb7946def0b321f1_section_title"> 
<textarea rows="3" name="sections[cd2f2759895b5ae6cb7946def0b321f1][content]" id="sections_cd2f2759895b5ae6cb7946def0b321f1_content" cols="40">Bar1</textarea> 

我如何強制導軌始終使用新的資源行爲,而不是自動將id添加到名稱和值中。我是否必須創建自定義表單構建器?是否還有其他一些技巧可以阻止導軌將指南的ID放在那裏?我嘗試了一堆東西,沒有任何工作。

在此先感謝!

回答

1

好吧,我想我已經找到了一些有效的東西。將部分的第一行更改爲:

<%= fields_for "sections", section, :index => "" do |guide_section_form| %> 

似乎工作得很好。通過這種方式,新的和編輯窗體看起來都是一樣的,並且params哈希就像我需要的一樣工作。如果有人看到有什麼問題或有其他的選擇,請讓我知道。

相關問題