ajax请求后的表单验证

时间:2012-02-22 13:08:48

标签: ajax ruby-on-rails-3.1 validation

我正在使用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:在$ .ajax调用中使用这种方法代替标准发送json /接收json真的是一个好主意吗?

我的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 %>

0 个答案:

没有答案