Próbuję forum beast napisane w szynach i użyję tego jako przykładu problemu, który napotykam.Sprawdzanie poprawności tras przez przekierowanie
Na forum znajduje się temat/akcja pokazu i widok z formularzem na dole, aby utworzyć nowy wpis w temacie.
Przesłanie formularza przechodzi do postów/utworzenia i jeśli sprawdzanie poprawności przekieruje z powrotem do tematów/pokazu i działa poprawnie, ale jeśli walidacja nie powiedzie się (pomijając pole ciała), nastąpi przekierowanie do tych samych tematów/pokazów i powrót do formularza, bez błędów sprawdzania poprawności ... normalnie, jeśli sprawdzanie poprawności nie powiedzie się, pozostaniesz na czymkolwiek/create przy pomocy render: action => new.
Czy sprawdzanie poprawności jest tracone w przekierowaniu i jaka jest najlepsza metoda sprawdzenia, czy działa?
patrz kod poniżej:
PostsController.rb
def create
@post = current_user.reply @topic, params[:post][:body]
respond_to do |format|
if @post.new_record?
format.html { redirect_to forum_topic_path(@forum, @topic) }
format.xml { render :xml => @post.errors, :status => :unprocessable_entity }
else
flash[:notice] = 'Post was successfully created.'
format.html { redirect_to(forum_topic_post_path(@forum, @topic, @post, :anchor => dom_id(@post))) }
format.xml { render :xml => @post, :status => :created, :location => forum_topic_post_url(@forum, @topic, @post) }
end
end
end
TopicsController.rb
def show
respond_to do |format|
format.html do
if logged_in?
current_user.seen!
(session[:topics] ||= {})[@topic.id] = Time.now.utc
end
@topic.hit! unless logged_in? && @topic.user_id == current_user.id
@posts = @topic.posts.paginate :page => current_page
@post = Post.new
end
format.xml { render :xml => @topic }
end
end
tematów/show widok
<% form_for :post, :url => forum_topic_posts_path(@forum, @topic, :page => @topic.last_page) do |f| %>
<%= f.error_messages %>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td rowspan="2" width="70%">
<%= f.text_area :body, :rows => 8 %>
</td>
<td valign="top">
<%= render :partial => "posts/formatting" %>
</td>
</tr>
<tr>
<td valign="bottom" style="padding-bottom:15px;">
<%= submit_tag I18n.t('txt.views_topics.save_reply', :default => 'Save reply') %>
</td>
</tr>
</table>
<% end %>
Dziękujemy.
Sam proces pracy wygląda dziwnie – Chirantan
Jak masz na myśli? Mogłem prosić o to prościej bez przykładu. Zasadniczo, co dzieje się z komunikatami o błędach, jeśli przekierowujesz zamiast renderować i gdzie można uzyskać do nich dostęp? – sebastyuiop