Проверка формы после запроса ajax - PullRequest
1 голос
/ 22 февраля 2012

Я использую Rails 3.2 и делаю свой первый Ajax-запрос.

Это мой код:

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

    respond_to do |format|
      if @comment.save
        format.html {
          redirect_to @post
        }
        format.js
      else
        format.html {
          render 'posts/show'
        }
        format.js
      end
    end
  end

Итак, я понимаю, что возвращаю шаблон js.

Итак, вопрос 1: действительно ли хорошая идея использовать этот подход вместо стандартной отправки json / receive json при вызове $ .ajax?

Мой create.js.erb:

$(".commentlist").append("<%= escape_javascript(render(:partial => @comment)) %>");

Работает отлично.

Но ... как я проверяю форму? (Без ajax работает отлично).

Я вижу, что js.erb похож на html.erb, но с js вместо html (я по-прежнему вижу это странно, я думаю, что проще использовать controller.coffee, но я тоже научусь так: )).

Итак, вопрос 2: Как я проверяю? Я вижу, что при вызове ajax я получаю весь html и два моих действия (@post и @comment).

Только для этого мне нужно изучить подход Rails для создания ajax:)

P.S: Мой _form.html.erb:

<%= form_for comment, :url => post_comments_path(comment.post), :remote => true do |f| %>
    <% if comment.errors.any? %>
        <div id="error_explanation">
          <h2><%= pluralize(comment.errors.count, "error") %> prohibited this comment from being added:</h2>

          <ul>
            <% comment.errors.full_messages.each do |msg| %>
                <li><%= msg %></li>
            <% end %>
          </ul>
        </div>
    <% end %>

    <%= f.hidden_field :post_id %>
    <p>
      <%= f.label :name %>
      <%= f.text_field :name %>
    </p>
    <p>
      <%= f.label :email %>
      <%= f.text_field :email %>
    </p>
    <p>
      <%= f.label :url %>
      <%= f.text_field :url %>
    </p>
    <p>
      <%= f.label :content %>
      <%= f.text_area :content %>
    </p>
    <p class="no-border">
      <%= f.submit "Post", :class => "button" %>
    </p>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...