Witam,
Na wstępie chciał bym przywitać wszystkich forumowiczów!
Od miesiąca angażuję się mocno w poznanie RoR. Idzie mi całkiem nieźle, lecz na etapie każdych “projekcików” mam problemy, które pojawiają się w każdej zaczętej przezemnie aplikacji.
Za każdym razem tworzone aplikacje są prostymi blogami, fotoblogami itp. Problem, który pojawia mi się co krok to tak naprawdę znikające obiekty, stąd moje pytanie
- Czy tworząc aplikacje gdzie mamy 2 kontrolery, Fotografia oraz Blog chcąc stworzyć komentarze, to lepiej stworzyć 3 kontroler (logicznie myśląc) , który obsłuży cała logikę ale mam problem z zmiennymi zainicjowanymi w pozostałych kontrolerach czy też w każdym kontrolerze obsługiwać komentarze ?
Jak wybiorę opcję pierwsza mam niestety problem z obiektami i zainicjowanymi zmiennymi, np gdy formularz zostanie błędnie wypełniony, nie jestem w stanie wyświetlić błędów z modelu. Poniżej przedstawiam kod:
Kontroler project
def wyswietl
@project = Project.find_by_id_and_active(params[:id], 1 )
if @project == nil
@project = Project.find_by_titleUrl_and_active(params[:id], 1)
if @project == nil
flash[:notice] = "Ups..Taki projekt nie istnieje :("
redirect_to "/projekty"
end
end
Widok wyswietl.html.erb
[code]
<div class="title">
<p><%= @project.title %> </p>
</div>
<div class="main_text_capital">
<%= @project.shortDescription %>
</div>
<div class="main_text">
<%= sanitize @project.description, :tags => "div, img, p" %>
</div>
<% if flash[:notice] %>
<%= flash[:notice] %>
<% end %>
[code]<%= form_for(comment, :url => {:controller => “komentarz”, :action => “nowy”}) do |f| %>
<% if comment.errors.any? %>
<%= pluralize(:comment.errors.count, “error”)%> prohibited this comment from being saved:
<ul>
<% comment.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.hidden_field :project_id, :value => project_id %>
<%= f.hidden_field :gallery_id, :value => gallery_id %>
<p>Nick:</p> <%= f.text_field :nick %>
<p>Komentarz:</p> <%= f.text_area :description %>
<%= f.submit "Dodaj" %>
<% end %>[/code]
Prawidłowe wypłenienie formularza do komentarza wyświetla wszystko tak jak trzeba, lecz gdy wypełnię go źle, nie dostaje komunikatów z
<% if comment.errors.any? %>
Wiem, że render generuje tylko widok akcji a nie samą akcje , więc zawsze tam gdzie będą rendery muszę raz jeszcze tworzyć wszystkie operacje związane z danym widokiem ?
W przypadku gdy kontroler komentarz z akcja nowe wywoła render to w linku widzę już strona/komentarz/nowe zamiast blog/1 - można to jakoś zamaskować ?
Dzięki z góry za pomoc.