Jquery 如何指定AJAX响应?

Jquery 如何指定AJAX响应?,jquery,ruby-on-rails,ajax,ruby-on-rails-3,unobtrusive-javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 3,Unobtrusive Javascript,我正在深入研究Rails3/JQuery/UnobtrusiveJavaScript。我已经编写了一个玩具应用程序,可以在禁用JS的情况下完成我想要的一切,现在我想引入javascript,这样服务器就不必在每次事务中刷新整个页面 以下是用于创建新玩具的非JS控制器/视图环境: 控制器 。。。并在index.html.erb视图的[New Toy]链接中启用了:remote=>true选项: <%= link_to 'New Toy', new_toy_path, :class =>

我正在深入研究Rails3/JQuery/UnobtrusiveJavaScript。我已经编写了一个玩具应用程序,可以在禁用JS的情况下完成我想要的一切,现在我想引入javascript,这样服务器就不必在每次事务中刷新整个页面

以下是用于创建新玩具的非JS控制器/视图环境:

控制器 。。。并在index.html.erb视图的[New Toy]链接中启用了:remote=>true选项:

<%= link_to 'New Toy', new_toy_path, :class => 'new', :remote => true %>
在new.js.erb中

$("#some_div").append("<%= escape_javascript(render "toys/form", :toy => @toy) %>")

我修改了我的控制器,并按照您建议的思路实现了一个新的.js.erb,而且-整洁我看到服务器以javascript的形式响应表单,尽管它没有呈现表单。但在随后的单击中,服务器会以304 Not Modified作为响应。所以有两个问题:你能在你的最后一句话中详细说明如何渲染部分吗?我应该关注304 Not Modified吗?我想我理解304 Not Modified的内容-在调试时,我已经将expires_添加到我的ToysControllernew方法中,以强制服务器提供表单。尽管new.js.erb看起来是正确的,但仍在试图找出如何将其显示在页面上。结果表明,在我记住正确的标点符号后,一切都正常了:$some_div!=$。一些分区。但请参阅上面的“更新”了解304未修改的解决方法。谢谢你的帮助!编辑:好的,如果它能工作,那就太好了应执行new.js.erb中的响应js代码。所以您需要更改$somediv.append。。。到适合你的html的东西。可以肯定的是,如果你只是写了一个警告“成功”;在你的new.js.html中,警报框会弹出吗?哦,是的,还有更多。看看我的劳动成果和你的帮助。
# ========== 
# file: views/toys/_form.html.erb
<%= form_for(toy) do |f| %>
  <div class='column selected'><%= f.number_field :sku %></div>
  <div class='column selected'><%= f.text_field :description %></div>
  <div class='column selected'>
    <%= link_to 'Cancel', toys_path %>
    <%= f.submit %>
  </div>
<% end %>
def new
  @toys = Toy.all
  @toy = Toy.new
  respond_to do |format|
    format.html               # new.html.erb
    format.js   { render :partial => 'form', :locals => {:toy => @toy} }
  end
end
<%= link_to 'New Toy', new_toy_path, :class => 'new', :remote => true %>
def new
  @toy = Toy.new
  expires_now
  respond_to do |format|
    format.html ...
    format.js ....
  end
end
def new
    @toy = Toy.new
    respond_to do |format|
        format.html { @toys = Toy.all } #you only need to get all toys in this case (and you should add pagination)
        format.js
    end
 end
$("#some_div").append("<%= escape_javascript(render "toys/form", :toy => @toy) %>")
$.ajax({
   success: function(data) {
       $("#some_div").append(data);
   }
})