2013-04-13 22 views
10

Strong_parameters gemini kullanarak bir diziyi kaydetmeye çalışıyorum. Ama formun dizimi nasıl gönderdiğiyle ilgili sorunlar yaşıyorum. parametreler şu şekilde görünür: Ben parametreler çalışmasını sağlamak için sözdizimi almak gibi olamazSerialize dizisi, strong_parameters ile

def circuit_params 
    params.require(:circuit).permit(:title, :id, viewable_tasks: { }, ...) 
end 

: gibi

> params[:circuit] 
=> {"title"=>"Some title", ..., "viewable_tasks"=>{"0"=>"woop", "1"=>"dee", ...}} 

Ve circuit_params işlevi görünüyor. Ne benim konsolda olsun:

Benim modelinde
> circuit_params 
=> {"title"=>"implement plug-and-play mindshare", 
"viewable_tasks"=>{"0"=>nil, "1"=>nil, "2"=>nil}, ... 

Ben:

class Circuit < ActiveRecord::Base 
    serialize :viewable_tasks, Array 
    ... 
end 

ben o ben accepts_nested_attributes_for diyoruz özelliklerle düzgün çalışması için alabilirsiniz, bu nedenle bu bir şey olabilir fark bununla ilgili.

def circuit_params 
    params.require(:circuit).permit(:title, :id, viewable_tasks:[], ...) 
end 

cevap

14

Sadece aynı sorunu vardı ve bu doğru sözdizimi idi: Herhangi bir yardım için

Teşekkür

+1

izin parametresinin sonunda olması gerekmektedir Teşekkür ederiz! teşekkür ederim teşekkür ederim! –

-1

deneyin bu kullanarak

def circuit_params 
    params.require(:circuit).permit(:title, :id, {:viewable_tasks => []}, ...) 
end 
+1

Bu benim için çalışmıyor. Bir sözdizimi hatası alıyorum. –

+1

Dediğim gibi, karmaların mutlaka – Hamdan

0

tefrika ürün olmalıdır izin parametrelerinin sonu. Benim deneyimlerime göre (ve tam olarak nedenini bilmiyorum), seri hale getirilmiş bir öğeden sonra başka bir seri hale getirilmemiş bir öğe giremezsiniz ... bizi anlamaya çalışın.

+1

Ruby sözdizimi nedeniyle. Rails kısıtlaması değil. Ruby, bir kıymetin, {braces} 'de saklamaksızın bir parametre listesinin sonunda olmasını sağlar. Bir karma sonunda değilse, parantez içinde olmalıdır. –

+0

lol .. bunu bilmiyordum ... thanx ... ama neden? – Hamdan

+0

Neden emin değilim, @Hamdan. Sonunda parantezin bir karmaşadan ayrılma kabiliyeti, muhtemelen kolaylık ve okunabilirlik için ve son param olan bir hash bir konvansiyonu teşvik etmektir. Rails 'permit' yönteminde BTW, parantezleri kullanırsanız listenin başına veya ortasına bir karma yerleştirebilirsiniz. –