Cześć wszystkim,
dopiero zacząłęm przygodę z Railsami i już mam problemy. Jak na razie jestem po “Rails for Zombies” i “Getting Started with Rails” z http://guides.rubyonrails.org.
Pytanie, pewnie banalne, dotyczy tego drugiego. Jeżeli tworzony post nie przechodzi walidacji, pojawia się taka fajna tabelka z listą błędów oraz zakreślone zostają elementy formularza, które te błędy spowodowały.
Chciałem zrobić coś podobnego dla komentarzy przy postach. W modelu dla komentarzy mam zdefiniowane walidacje i oczywiście komentarz się nie pojawia pod postem jeżeli ich nie spełnia.
Brakuje mi jednak tej notki, która pokaże, gdzie konkretnie w formularzu te błędy były.
Zupełnie nie wiem, z której strony się za to zabrać. Jak taka walidacja działa dla postów chyba rozumiem, bo tam akcja ‘create’ jeżeli nie udało się stworzyć posta, wykonuje ponownie render akcji ‘new’ i z niej mogę się dobrać do obiektu w zmiennej @post i sprawdzić, czy były błędy. Tutaj natomiast create robi redirect do akcji innego kontrolera. Myślałem, aby tą treść, dlaczego komentarz nie przeszedł walidacji wysyłać przy pomocy redirect_to @post, :notice => @comment.errors.full_messages.join(', ')
ale nie wiem, czy takie to powinno mieć zastosowanie. Argh, nie wiem, czy dobrze to wszystko wytłumaczyłem. Sorry za przydługiego posta pewnie z banalną sprawą. Oczywiście szukałem po forum, ale ciężko mi określić odpowiednie reguły wyszukiwania.
Poniżej akcja ‘create’ dla kontrolera komenatrzy i widok pokazujący post i formularz.
[code]class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.new(params[:comment])
@comment.save
redirect_to @post
end
end[/code]
[code]
<%= flash[:notice] %>
// wyswietlanie posta
Comments
// wyswietlanie komentarzy
// ten nieszczesny formularz
Add a comment:
<%= form_for([@post, @post.comments.build]) do |f| %>
<%= f.text_field :commenter %>
<%= f.text_area :body %>
<%= link_to ‘Edit’, edit_post_path(@post) %> |
<%= link_to ‘Back’, posts_path %>[/code]
btw. mógłby ktoś polecić co dalej? Ciągnąć te guides z rubyonrails.org, czy iść w innym kierunku? Ciężko mi to idzie.