2013-12-20 6 views
0

Хорошо, поэтому я попытаюсь объяснить это как можно лучше.Сообщения об ошибках, отказавшиеся отображать [RoR]

У меня есть ThemeController, у которого есть метод Show внутри него, который проходит через модель тем и отображает всю необходимую информацию и ниже. У меня есть форма для моей модели сообщений. Проблема в том, что сообщения об ошибках отказываются отображать, если не удалось выполнить проверку. Я пробовал ВСЕ, и я не знаю, что еще делать. У меня есть частичная ошибка, которая должна работать.

Контроллер:

def create 
    @community_post.user_id = current_user.id 
    @community_post.community_topic_id = params[:community_topic_id] 

    if @community_post.save 
     redirect_to "/community_topics/#{@community_post.community_topic_id}", notice: 'Community post was successfully created.' 
    else 
     redirect_to "/community_topics/#{@community_post.community_topic_id}", notice: 'Community post was NOT successfully created.' 
     @community_post.community_topic_id = nil 
    end 
    end 

Вид:

<h1> Submit reply </h1> 

<% @community_post = CommunityPost.new %> 

<%= form_for(@community_post) do |f| %> 

    <%= render 'error_messages_posts' %> 

    <%= f.label :text %> 
    <%= f.text_area :text %> 

    <%= hidden_field_tag :community_topic_id, @community_topic.id %> 

    <br> 

    <%= f.submit "Submit reply" %> 
<% end %> 

Частичное:

<% if @community_post.errors.any? %> 
    <div id="error_explanation"> 
    <div class="alert alert-error"> 
     The form contains <%= pluralize(@community_post.errors.count, "error") %>. 
    </div> 
    <ul> 
    <% @community_post.errors.full_messages.each do |msg| %> 
     <li>* <%= msg %></li> 
    <% end %> 
    </ul> 
    </div> 
<% end %> 

ответ

0

как вы перенаправляют поток к /community_topics/#{@community_post.community_topic_id}, значения ошибки в переменной @community_post теряются.

Вы можете сделать то же форму снова или передать сообщение об ошибке в извещении (Некоторые вещи, как redirect_to "/community_topics/#{@community_post.community_topic_id}", notice: "Community post was NOT successfully created. Errors : #{@community_post.errors.full_messages.join(', ')}")

Спасибо.

+0

Хорошо, но проблема в том, что шоу я должен вынести в другой контроллер, и я не мог заставить его работать. Что мне нужно? –

+0

Сообщение уведомления работает, но я хотел бы, чтобы он правильно отформатировался в форме, как и для всех моих других форм в моем приложении, для согласованности. –

+0

Я попробовал 'render: controller =>' community_topics ',: action =>' show ',: id => @ community_post.community_topic_id', но просто пытается отобразить шоу для контроллера i'm in (community_posts) –

2

Вы создаете новый экземпляр с в форме с

<% @community_post = CommunityPost.new %> 

сейчас у этого объекта нет никаких сообщений об ошибке, из-за чего вы не можете увидеть какое-либо сообщение об ошибке. Также вы перенаправляете его на другое действие, действие которого не знает вашего объекта .message, поэтому вы делаете все, что угодно ong

+0

Я точно знаю, что вы говорите, потому что я видел то же самое, однако, он не работал с этим исправленным в первую очередь. Вероятно, это PLUS использует redirect_to, из-за которого и возникают мои проблемы. Мне трудно получить рендер, чтобы на самом деле визуализировать метод от другого контроллера, но это затруднительно. –

0

Удалить строку @comminity_post = CommunityPost.new(), так как она создает новое сообщение без каких-либо ошибок.

Дополнительно визуализируйте форму с вашего create action.

render :new 

Rendering вид из другого контроллера

render :template => "controller/action" 
Смежные вопросы