2013-04-13 11 views
10

Próbuję zapisać tablicę przy użyciu gem strong_parameters. Ale mam problemy z tym, jak formularz wysyła moją tablicę. Params wyglądać następująco:Serialize array with strong_parameters

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

A moja circuit_params funkcja wygląda tak:

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

I nie wydają się uzyskać składni, aby umożliwić moje params do pracy. Co mam w mojej konsoli to:

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

W moim modelu mam:

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

zauważyłem, że mogę zmusić go do prawidłowej pracy z atrybutami nazywam accepts_nested_attributes_for dalej, więc może to mieć coś z tym zrobić.

Dzięki za wszelką pomoc

Odpowiedz

14

prostu miałem ten sam problem i to była poprawna składnia:

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

Dziękuję! Dziękuję dziękuję! –

-1

Spróbuj użyć tego:

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

To nie działa dla mnie. Dostaję błąd składni. –

+1

Jak już powiedziałem, skróty muszą koniecznie znajdować się na końcu parametrów zezwolenia – Hamdan

0

szeregowej elementy muszą być w koniec parametrów pozwolenia. Z mojego doświadczenia (i nie wiem dokładnie dlaczego), nie można wprowadzić kolejnego niezsowziętego elementu po serializacji ... spróbuj i daj nam znać.

+1

Dzieje się tak ze względu na składnię Ruby. To nie jest ograniczenie Railsów. Ruby pozwala, aby skrót znajdował się na końcu listy parametrów bez zamykania go w {nawiasy klamrowe}. Jeśli hash nie jest na końcu, musi być w nawiasach klamrowych. –

+0

lol .. nie wiedziałem, że ... thanx ... ale dlaczego? – Hamdan

+0

Nie jestem pewien, dlaczego, @Hamdan. Zdolność do opuszczenia szelki z hasha na końcu jest prawdopodobnie dla wygody i czytelności i zachęcić konwencję hash będącą ostatnim parametrem. W metodzie pozwoleń Railsów, BTW, możesz całkowicie umieścić skrót na początku lub na środku listy, jeśli używasz nawiasów klamrowych. –