我在Rails的一个视图中的按钮上有一个remote_to与remote:true。
我想在调用AJAX之后更改该按钮的属性[让我们说它变成蓝色]并处理它所指向的.js.erb文件,但我无法弄清楚如何获取该对象传递给我的.js.erb。如果我没有使用remote:true,但使用原始/自制的AJAX,我想要的是this
或$(this)
,但我无法弄清楚如何通过this
到我的.js.erb
文件
示例代码(简化):
的index.html
link_to("Load This One", show_path(1), {:remote true})
show.js.erb
//Load some modal
$("#myModal .modalcontent).html("<%=.......>");
$("#myModal").modal();
// ****** change properties on button that loaded that modal
$( this).css('color', 'blue');
我想知道如何在show.js.erb中获取link_to锚点。这可能吗?
谢谢!
答案 0 :(得分:1)
有两种方法可以做到这一点:
您可以在您的应用asset pipeline
中使用标准UJS ajax 捕获该事件:
#app/assets/javascripts/application.js
$(document).on("ajax:send", "a", function(xhr){
$(this).css("color", "blue");
}).on("ajax:success", "a", function(data, status, xhr) {
alert("Ajax Success!!");
});
<强> ID 强>
唯一有效的方式&#34; bind&#34;后端的元素是使用DOM中的id
属性:
#app/views/controller/your_view.html.erb
<%= link_to "Load", show_path(1), remote: true, id: "1" %>
只要id
属性与您传递给控制器的对象相对应,您就可以使用以下内容:
#app/controllers/your_controller.rb
Class YourController < ApplicationController
def show
...
@id = params[:id]
respond_to do |format|
format.js #-> show.js.erb
end
end
end
#app/views/your_controller/show.js.erb
$('# <%=j @id %>').css('color', 'blue')
答案 1 :(得分:0)
将id设为您的link_to
<%= link_to("Load This One", show_path(1), remote: true, id: 'my-button') %>
然后只需使用此链接ID更改其颜色
在你的js.erb文件中
$('#my-button').css('color', 'blue')