我使用ajax在不重新加载页面的情况下进行单击时的控制器操作。我似乎无法获得要渲染的js视图。
transactions_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 %>
routes.rb:
get 'admin/transactions' => 'admin/transactions#index'
patch 'admin/transactions/:id' => 'admin/transactions#escrow', :as => 'escrow'escrow.js:
$('#escrow').html("<%= j (render @escrow) %>");我不确定我做错了什么!谢谢!:)
发布于 2016-07-31 18:34:15
不是答案,而是关于下一步该怎么做的建议:
从这里开始,您需要做的是开始缩小问题发生的范围。您知道,当您单击链接时,它不会执行您想要的操作。现在,一步一步地检查,看看哪里出了问题。使用以下内容的答案更新您的问题:
现在,打开ajax:
alert('got here');替换escrow.js中的代码,它会执行吗?发布于 2016-07-31 18:55:18
您可以尝试如下所示:
# escrow.js.erb
var html = "<%= escape_javascript(render partial: 'escrow', locals: { escrow_var: @escrow } ) %>"
$('#escrow').html(html);您应该有一个名为_escrow.html.erb的部分代码,并在部分代码中使用escrow_var而不是@scrow。
当然,您可以使用任何其他名称。
https://stackoverflow.com/questions/38682677
复制相似问题