Render 'new' nie wyswietla pol w formularzu

Witam, mam maly problem, przy niepowodzeniu zapisania postu wywoluje metode render z akcja new. Wszystkie pola postu sa wyswietlane natomiast 10 pol ktore sa definiowane w metodzie new nie sa. Zamieszam kod metod new i create. Dlaczego nie sa one wyswietlane? Domyslam sie ze metoda render tutaj jest problemem, ale dwoch metod redirect_to nie mozna uzyc w tej samej metodzie.

[code]def new
@commentable = Post.new
10.times { @commentable.assets.build }
end

def create
@commentable = Post.new(post_params)

if @commentable.save
redirect_to @commentable
else
render ‘new’
end
end[/code]
Znalazlem na szybko rozwiazanie, ale nie wiem czy jest najlepsze. Mozecie doradzic czy jest jakies inne lepsze?

[code]def create
@commentable = Post.new(post_params)

if @commentable.save
redirect_to @commentable
else
10.times { @commentable.assets.build }
render ‘new’
end
end[/code]

Jak wywołujesz render innej akcji w controllerze, to Rails jedynie renderuje widoki tej akcji, a nie wywołuje całą metodę. W świetle tej informacji Twoje rozwiązanie jest poprawne.

W Twoim przypadku można. Nie dałoby się, gdybyś za ifem na końcu znowu miał jakieś redirect_to. Jeśli wykonanie redirect_to jest zależne od jakiegoś warunku, to można użyć redirect_to więcej niż raz.