首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不重新加载页面的情况下,通过单击按钮来呈现操作: Ajax

在不重新加载页面的情况下,通过单击按钮来呈现操作: Ajax
EN

Stack Overflow用户
提问于 2016-07-31 17:41:46
回答 2查看 48关注 0票数 0

我使用ajax在不重新加载页面的情况下进行单击时的控制器操作。我似乎无法获得要渲染的js视图。

transactions_controller:

代码语言:javascript
复制
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上的链接:

代码语言:javascript
复制
<% @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 %>

routes.rb:

代码语言:javascript
复制
get 'admin/transactions' => 'admin/transactions#index' 
patch 'admin/transactions/:id' => 'admin/transactions#escrow', :as => 'escrow'

escrow.js:

代码语言:javascript
复制
$('#escrow').html("<%= j (render @escrow) %>");

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

EN

回答 2

Stack Overflow用户

发布于 2016-07-31 18:34:15

不是答案,而是关于下一步该怎么做的建议:

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

  1. 如果您关闭ajax (remote => false),它会工作吗?

现在,打开ajax:

  1. 单击该链接是否会向服务器发送请求?(使用Chrome dev工具检查)请求是您所期望的吗?
  2. 您的rails服务器是否收到任何类型的请求?单击链接后查看日志,查看是否发生了任何情况。如果是这样,那该怎么办?这看起来像是一个成功的请求吗?
  3. 如果您只是用一个简单的alert('got here');替换escrow.js中的代码,它会执行吗?
票数 0
EN

Stack Overflow用户

发布于 2016-07-31 18:55:18

您可以尝试如下所示:

代码语言:javascript
复制
# escrow.js.erb
var html = "<%= escape_javascript(render partial: 'escrow', locals: { escrow_var: @escrow } ) %>"
$('#escrow').html(html);

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38682677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档