2014-03-12 43 views
1

我在使用與mongoid軌道新,我有在存儲領域的一些一個數組中軌自動字符串化與mongoid

這裏的數組的問題是在我的模型,以澄清一切

代碼:

def create 
@something = Something.new(something_params) 
    @something[:some_field] = params[:something][:some_field].split(',') 
    if @something.save 
     redirect_to @something, notice: "whatever" 
    else 
     render "new" 
    end 
end 
在我看來

class Something 
    include Mongoid::Document 
    field :some_field, type: Array 
end 
在我的控制器

<%= form_for @something do |f| %> 
    <div class="field"> 
     <%= f.label :some_field %><br> 
     <%= f.text_area :some_field %> 
    </div> 
    <div class="actions"> 
     <%= f.submit %> 
    </div> 
<% end %> 

當我使用它的方式,我得到的錯誤消息: 「問題:String類型的值不能被寫入型陣列摘要的字段:試過String類型的值設置爲的場型陣列解決方案:驗證如果要被設置的值對應於字段定義」

但是當我更改字段類型爲字符串,它成功添加但有字符串化陣列

我嘗試這樣做:

render :text => @something[:some_field] #outputs : ["field1", "field2", "field3"] 

render :text => @something[:some_field].inspect #outputs : "[\"field1\", \"field2\", \"field3\"]" 

我應該怎麼做來存儲值作爲一個數組?

感謝

+2

難道是抱怨的Something.new(something_params)嗎?據推測':some_field'是'something_params'中的一個字符串,對吧? –

+0

是的,你是對的! ..但是,我什麼時候可以拆分':some_field',以便它可以存儲爲數組? –

+0

我認爲你必須使用update_attributes – archie

回答

0

我終於想通了,什麼是錯的

我打電話

@something = Something.new(something_params) 

所以之前修改散列值是一個數組的例子,我不得不鍵入此第一:

@something[:some_field] = params[:something][:some_field].split(',') 

該作品的代碼是:

def create 
    @something[:some_field] = params[:something][:some_field].split(',') 
    @something = Something.new(something_params) 
    if @something.save 
     redirect_to @something, notice: "whatever" 
    else 
     render "new" 
    end 
end 
+0

你使用的是什麼版本的Rails? – d34th4ck3r

+0

@ d34th4ck3r 4.0.2 –

0

添加.reject(&:?空白)拆分後( 「」)。我也使用mongoid,但多選擇。我將我的代碼更改爲text_area,此代碼適用於我。此外http://funonrails.com/2012/01/mongoid-array-field-and-rails-form/

@something[:some_field]=params[:something][:some_field].split(',').reject(&:blank?) 
+0

@archie它不被指定爲數組..它被轉換爲字符串數組..所以,它不是關於保存..它是之前保存(我認爲) –

+0

你需要添加拒絕(&:空白?)後,你拆分數組 – archie

+0

它不工作太不幸 –

相關問題