Ajax没有渲染部分的rails应用程序

时间:2014-12-21 17:47:33

标签: ruby-on-rails ajax

Ajax partial不在我的rails应用程序中呈现。

我有一个Article型号。我正在尝试使用Ajax添加新文章

请找到以下代码。

cart.html.erb

<div id="articles">
  <%= render 'showarticles' %>
</div>

cart.js.erb

$('#articles').html('<%= escape_javascript(render('static_pages/showarticles')) %>');
$('.form-control').val('')

的routes.rb

match 'cart/:id', to: 'static_pages#cart', via: [:get, :post]

_showarticles.html.erb

<%= form_for @article, :remote => true do |f| %>
<%= f.text_area :name, :class => "form-control" %>
<% end %>    
<% @art.each do |a| %>
<%= a.name %>
<% end %>

static_pages_controller.rb

def cart
  @art = Article.all
  @article = Article.new 
  respond_to do |format|
    format.html 
    format.js
  end
end

谢谢!

2 个答案:

答案 0 :(得分:1)

我可以通过将此行添加到我的routes.rb文件来修复此问题:

match 'cart', to: 'static_pages#cart', via: [:get, :post]

答案 1 :(得分:0)

确定,

所以这个

<%= form_for @article, :remote => true do |f| %>
<%= f.text_area :name, :class => "form-control" %>
<% end %>    
<% @art.each do |a| %>
<%= a.name %>
<% end %>

将转到文章创建方法。这就是为什么你的cart.js.erb没有被调用的原因。设置网址<%= form_for @article, :url => url_for(:controller => 'static_pages, :action => 'cart', :id => @cart.id), :remote => true do |f| %>或最好在文章控制器的创建操作中处理它