Использование AJAX для отображения сообщения об ошибке Ruby on Rails - PullRequest
1 голос
/ 23 апреля 2010

Я создал блог, используя Ruby on Rails. Новое для обоих. Я довольно эффективно внедряю AJAX, пока не доберусь до части обработки ошибок.

Я разрешаю комментировать сообщения и делаю это, предоставляя частичную и удаленную форму комментариев на странице /views/posts/show.html.erb. После успешного сохранения комментария страница шоу обновляется с использованием views / comments / create.js.rjs и отображает флэш-уведомление.

Я просто пытаюсь прошить уведомление, когда оно не сохраняется. Искал и работал немного самостоятельно. Не могу заставить его летать. Вот мой код:

/ просмотров / сообщений / show.html.erb

<div id="comments">

    <%= render :partial => @post.comments %>
    <div id="notice"><%= flash[:notice] %></div> 
</div>

<% remote_form_for [@post, Comment.new] do |f| %>

    <p>
        <%= f.label :body, "New Comment" %><br/>
        <%= f.text_area (:body, :class => "textarea") %>
    </p>
    <p>
        <%= f.label :name, "Name" %><br/>
        <%= f.text_field (:name, :class => "textfield") %>
    </p>
    <p>
        <%= f.label :email, "Email" %><br/>
        <%= f.text_field (:email, :class => "textfield") %>
    </p>
    <p><%= f.submit "Add Comment" %></p>
<% end %>

/ мнения / комментарии / _comment.html.erb

<% div_for comment do %>
<div id="comment-wrapper">

        <%  if admin? %>
        <div id="comment-destroy"><%=link_to_remote "X", :url => [@post, comment], :method => :delete %></div>
        <% end %>
        <%= h(comment.body) %><br/><br/>
        <div class="small">Posted <%= time_ago_in_words(comment.created_at) %> ago by <%= h(comment.name) %> 
        <%  if admin? %>
         | <%= h(comment.email) %>

        <% end %></div>

    </div>
<% end %>

/ просмотр / комментарии / create.js.rjs

page.insert_html :bottom, :comments, :partial => @comment
page[@comment].visual_effect :highlight 
page[:new_comment].reset
page.replace_html :notice, flash[:notice]
flash.discard

CommentsController # создать

 def create
   @post = Post.find(params[:post_id])
   @comment = @post.comments.create!(params[:comment])

   respond_to do |format|
     if @comment.save
       flash[:notice] = "Thanks for adding this comment" 
       format.html { redirect_to @post }
       format.js
     else
       flash[:notice] = "Make sure you include your name and a valid email address" 
       format.html { redirect_to @post }
       format.js

   end
 end
end 

1 Ответ

0 голосов
/ 24 апреля 2010

Создавай! это проблема, потому что создать! Вызывает исключение, когда модель недействительна, означая, что код answer_to ниже этого не будет выполнен

Как говорит Кори, замени творение! со сборкой. Тогда ваша стратегия отображения флеш-уведомлений через rjs может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...