繁体   English   中英

单击按钮即可呈现操作,而无需重新加载页面:Ajax

[英]render an action from clicking a button without reloading page: Ajax

我在不重新加载页面的情况下使用ajax进行了控制器操作。 我似乎无法获取js视图。

transaction_controller:

require "braintree"

    def index   
       @reservations = Reservation.where("transaction_id = transaction_id", true)

    end

    def escrow
        @reservation = Reservation.find(params[:id])
        @escrow = Braintree::Transaction.release_from_escrow(@reservation.transaction_id)
        @reservation.update_attributes pay_completed: true
        respond_to do |format|
            format.html
            format.js { render :layout=>false }
        end 
    end

    private
    def reservation
        @reservation = Reservation.find(params[:id])
    end

我在index.html.erb上的链接:

 <% @reservations.each do |reservation| %> <% @transaction = Braintree::Transaction.find(reservation.transaction_id) %> <tr> <td><%= reservation.id %></td> <td><%= reservation.transaction_id %></td> <td><%= reservation.reviser.user.username %></td> <td><%= reservation.user.username %></td> <td><%= @transaction.status %></td> <td><%= @transaction.escrow_status %></td> <td><%= reservation.created_at %></td> <td><%= reservation.completed %></td> <td><%= link_to "stock", escrow_path(reservation), :remote => true %></td> </tr> <% end %> 

route.rb:

get 'admin/transactions' => 'admin/transactions#index' 
patch 'admin/transactions/:id' => 'admin/transactions#escrow', :as => 'escrow'

escrow.js:

$('#escrow').html("<%= j (render @escrow) %>");

我不确定我在做什么错! 谢谢! :)

不是答案,而是关于从这里出发的建议:

从这里开始,您需要做的是缩小问题发生的范围。 您知道,当您单击链接时,它不会执行您想要的操作。 现在,逐步进行操作,看看哪里出了问题。 使用以下答案更新您的问题:

  1. 如果关闭ajax(远程=> false),它能工作吗?

现在,打开ajax:

  1. 单击链接是否完全将请求发送到服务器? (使用Chrome开发者工具进行检查)请求是否符合您的期望?
  2. 您的Rails服务器会收到任何请求吗? 单击链接后查看日志,以查看是否发生任何事情。 如果可以,该怎么办? 看起来像是成功的请求?
  3. 如果您只是使用简单的alert('got here');替换escrow.js中的代码alert('got here'); ,它执行吗?

您可以尝试这样的事情:

# escrow.js.erb
var html = "<%= escape_javascript(render partial: 'escrow', locals: { escrow_var: @escrow } ) %>"
$('#escrow').html(html);

您应该有一个名为_escrow.html.erb的部分,并在该部分中使用escrow_var而不是@scrow

当然,您可以使用任何其他名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM