Witam
Rozpocząłem właśnie moją przygodę z Rails-ami.
Piszę właśnie własną pierwszą aplikacją i jestem jak na razie pod wrażeniem frameworku.
Mam taki problem:
W kontrolerze main mam metodę o nazwie create, która służy do zapisania komentarza pod newsem.
[code] def comment
@post = Post.find(params[:id])
@id = params[:id]
end
def create
@p = Post.find(params[:id])
c = Comment.new
c.author = params[:author][:author]
c.content = params[:content][:content]
@p.comment << c
@p.save
render :controller => "main", :action => "comment", :id => params[:id]
end[/code]
Jak widać szukam posta następnie tworzę obiekt komentarza i dopisuję go do tablicy. Następnie zapisuję. Później chcę aby wyświetliła się strona gdzie wypisuję pojedynczy news z komentarzami -> metoda comment
Jednak wywala mi błąd jak kliknę zapisz w form i po przejściu do create:
Showing app/views/main/comment.html.erb where line #1 raised:
You have a nil object when you didn’t expect it!
The error occurred while evaluating nil.title
Extracted source (around line #1):
1:
<%= @post.title %>
2:
3:
4: <%= @post.date %>
Wydaje mi się jakby po przejściu do comment nie wywołało się nic w kontrolerze comment. Wydaje mi się że: render :controller => “main”, :action => “comment”, :id => params[:id] zrobi to samo jakbyśmy wywołali /main/comment/1 czyli wykona wszystko co jest w kontrolerze czyli znajdzie posta a następnie przejdzie do widoku i go wyświetli. Chyba że się mylę. Może być też tak że nic nie znajdzie @post = Post.find(params[:id]), ale przecież wysyłam id.
oto widok:
[code]
<%= @post.title %>
<%= @post.date %>
<%= @post.content %>
<%= form_tag(’/main/create/’ + @id) %>
Author: <%= text_field “author”, “author”%>
Text: <%= text_field “content”, “content”%>
<%= submit_tag %>
<% for c in @post.comment %>
<%= c.author %>
<%= c.content %>
<% end %>[/code]
Dzięki za pomoc