2010-10-09 62 views
1

我能夠在我看來,以創建嵌套數組張貼到我的「創造」的行動。但我不知道如何保存嵌套數組。導軌 - 節能嵌套數組

這裏是基本的創造作用那裏得到質量分配PARAMS揉成所有個人PARAMS:

def create 
    @post = Post.new(params[:mass_assigned]) 
    respond_to do |format| 
    if @post.save 
     format.html 
    else 
     format.html 
    end 
    end 
end 

但這返回nil對象錯誤。它使用check_box_tag而不是使用check_box可能是因爲我的形式配備了漂亮的魔法使:mass_assigned是零。我相當新的軌道,並會感謝任何導致得到這個工作。請解釋如何格式化我的方法來收集單個參數然後保存它。

回答

0

我不知道,如果你的問題只是保存一個對象,或者您想序列化 - 你的問題是,你的「嵌套數組」要注入到數據庫被壓扁之前保存或東西。

如果它是第一個,那麼請確保你有params [:mass_assigned]可用。你總是可以添加一行,在你的控制方法的頂部:

throw params 

...並提交表單,看看您有什麼可並檢查結構。 很高興看到您提交的表單的代碼與從日誌中取回的應用程序錯誤的回溯

如果是第二種情況,請告訴我,我會盡快與您聯繫; )

0

我這個奮鬥了一整天我自己。如果你仍然在尋找答案,並且如果我正確理解你的問題,請嘗試以下示例:

a)使用腳手架作爲人名:字符串地址:文本,以設置模型,視圖等。

B)

In app/models/person.rb: 
class Person < ActiveRecord::Base 
     attr_accessible :address, :name 
    serialize :address 
end 

腳手架視圖具有相同的_form部分新的和編輯視圖。你可以得到新的,並顯示行動,通過將下面的代碼形式成功完成:

<%= form_for(@person) do |f| %> 
... 
     <%= f.fields_for :address do |address_fields| %> 
     Street : <%= address_fields.text_field :street %> 
     Zip code: <%= address_fields.text_field :zip_code %> 
     <% end %> 
... 
<% end %> 

然而,編輯視圖不會從上面的代碼模型填充值的文本字段。爲了解決這個你需要提取從@ person.address哈希值,並將其明確分配給文本。如果您正在使用腳手架視圖,則表單通常使用_form部分呈現。這使事情變得複雜,因爲添加代碼來提取地址組件的值會影響新對象。你可以通過在Person.new期間初始化地址散列或者如下所示檢查nil來獲得這個結果:

<%= f.fields_for :address do |address_fields| %> 
    Street : <%= address_fields.text_field :street,:value => @person.address.nil? ? "":@person.address["street"] %> 
    Zip code: <%= address_fields.text_field :zip_code,:value => @person.address.nil? ? "":@person.address["zip_code"] %> 
    <% end %> 

希望有幫助。