【问题标题】:Rails don't add new table row with ajax/jqueryRails 不使用 ajax/jquery 添加新表行
【发布时间】:2018-04-19 19:16:06
【问题描述】:

我有一个奇怪的问题。

我正在使用 ajax 和 jquery 将行动态添加到表中,但它没有添加任何内容,但是在我拥有的服务器日志中

Completed 200 OK in 23ms (Views: 5.3ms | ActiveRecord: 7.9ms)

响应中的内容是

$('.products-table tr:last').after('<tr>
  <td>Test</td>
  <td>1</td>
  <td>1.2</td>
  <td>1.2</td>
</tr>');

我试过了

$('.products-table').append('<tr>
  <td>Test</td>
  <td>1</td>
  <td>1.2</td>
  <td>1.2</td>
</tr>');

但它也不起作用。

我正在尝试将其放入此表中

<div class="order-bar">
  <div class="order-bar-title">
    Order for table <%= @order.table %>
  </div>
    <div class="order-products-list">
    <table class="table table-hover table-condensed products-table">
      <tr>
        <td>Name</td><td>Quantity</td><td>Price</td> 
        <td>Total</td>
      </tr>
      <% if !@order.order_items.any? %>
        <% @order.order_items.each do |order_item| %>
          <%= render 'hall_tables/partials/product_line', :locals => { :order_item => order_item, :id => id }%>
        <% end %>
      <% end %>
    </table>
  </div>
</div>

这里是jquery代码 创建.js

$('.products-table tr:last').after('<%= render "hall_tables/partials/product_line", :locals => { :item => @item }%>');

控制器

def create
  @order = Order.find(session[:order_id])
  @item = @order.order_items.new(item_params)
  @order.save
  respond_to do |format|
    format.html { }
    format.js { }
  end
end

【问题讨论】:

  • 请提供更多细节。原始视图、控制器以及调用 jquery 脚本的方式
  • @AlexanderSysuiev 我已经编辑了我的帖子

标签: jquery ruby-on-rails ajax


【解决方案1】:

我假设你有一个 javascript 错误,因为它没有被转义。请检查浏览器控制台。 你可以试试:

$('.products-table tr:last').after('<%= j(render "hall_tables/partials/product_line", :locals => { :item => @item }) %>');

另外,请确保您有 js.erb 扩展名来创建视图

【讨论】:

  • 天啊...这太明显了。我知道我忘记了一些事情。非常感谢!
猜你喜欢
  • 2014-03-18
  • 2011-10-17
  • 2013-09-30
  • 1970-01-01
  • 2021-03-31
  • 2011-07-03
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
相关资源
最近更新 更多