我正在使用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 %>