Javascript 使用Rails JS模板的正确方法是什么?

Javascript 使用Rails JS模板的正确方法是什么?,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我只是不清楚如何很好地使用Rails JS模板。它们实际上是在替换AJAX请求的成功回调,对吗?为什么将请求成功时执行的JS与为各种其他回调执行的JS分开是有意义的 当然,这假设我正在将一个点击处理程序或其他东西绑定到一个链接,并以这种方式发出AJAX请求。当然,我可以使用链接,指向:remote=>true。我想在这种情况下,使用JS模板可能是有意义的。但是,如果你需要处理成功以外的其他情况,你会怎么做?将ajax:failure事件绑定到link\u to生成的链接?这意味着在两个不同的地方

我只是不清楚如何很好地使用Rails JS模板。它们实际上是在替换AJAX请求的成功回调,对吗?为什么将请求成功时执行的JS与为各种其他回调执行的JS分开是有意义的

当然,这假设我正在将一个点击处理程序或其他东西绑定到一个链接,并以这种方式发出AJAX请求。当然,我可以使用
链接,指向
:remote=>true
。我想在这种情况下,使用JS模板可能是有意义的。但是,如果你需要处理成功以外的其他情况,你会怎么做?将
ajax:failure
事件绑定到
link\u to
生成的链接?这意味着在两个不同的地方维护与该链接相关的JS。如果有两个链接(比如,具有不同的标记)都向该操作发出请求,但每个链接都需要执行不同的JS,因为它们在单击时需要不同的行为,那么会发生什么呢?用JS模板如何处理


我想的对吗?

我认为最好的办法是避免使用js模板。尝试用ruby编写js代码是一种反常现象。。。这是我的观点,但另一种方法更干净、更简单,因为您使用实际语言编写代码。
因此,编写javascript调用链接中提供的url,然后请求json中的内容。在控制器中,只需返回json格式的数据(它可以是包含数据的对象列表,也可以是像:{success:true}或{success:false}这样的对象)。然后在你的js中处理对象并做出适当的动作。在指向同一url的不同部分,你可以在你的js中采取不同的动作。

我认为最好的方法是避免使用js模板。尝试用ruby编写js代码是一种反常现象……我认为,但另一种方法更干净、更简单,因为你用实际语言编写代码。
因此,编写javascript调用链接中提供的url,然后请求json中的内容。在控制器中,只需返回json中的数据(可以是包含数据的对象列表,也可以是类似于:{success:true}或{success:false}的对象)。然后在js中处理对象并执行相应的操作。在指向同一url的不同部分,您可以在js中执行不同的操作。

您将使用嵌入式Ruby(因为您的javascript模板是js.erb文件)

如果您希望根据成功或失败执行不同的javascript集 你可以这样做:

控制器:

def my_action
  #some code
  @success = true #or false
  respond_to do |format|
    format.js #you may need to add render :layout => false
    format.html #html fallback 
  end
end
然后在my_action.js.erb视图中:

<% if @success %>
  //Some javascript for success
<% else %>
  //Some javascript for failure
<% end %>

//一些成功的javascript
//失败的原因

您将使用嵌入式Ruby(因为您的javascript模板是js.erb文件)

如果您希望根据成功或失败执行不同的javascript集 你可以这样做:

控制器:

def my_action
  #some code
  @success = true #or false
  respond_to do |format|
    format.js #you may need to add render :layout => false
    format.html #html fallback 
  end
end
然后在my_action.js.erb视图中:

<% if @success %>
  //Some javascript for success
<% else %>
  //Some javascript for failure
<% end %>

//一些成功的javascript
//失败的原因

是的,这对我来说是最有意义的。我只是想弄清楚我是否误解了如何使用JS模板。哦,还有,你觉得远程
链接到
怎么样?有没有任何这样的用例?或者只是让它成为一个常规链接并添加一个点击处理程序?我不喜欢远程链接,但这取决于你u、 …我喜欢编写和控制我的js,实现起来并不是那么难,你也不受rails实现的束缚…没错。我很难弄明白为什么它们一开始就在那里,而似乎没有真正好的方法来使用它们。对,这对我来说是最有意义的。我只是想弄清楚我是否误解了如何使用JS模板。哦,还有,你对远程
链接到
有什么感觉吗?有过这样的用例吗?或者只是把它变成一个普通的链接并添加一个点击处理程序?我不喜欢远程链接到,但这取决于你……我喜欢编写和控制我的JS,实现起来并没有那么困难你并不依赖于rails的实现……确实如此。我很难弄明白为什么它们一开始就存在于其中,而现在似乎没有真正好的方法来使用它们。嗯,这样做很有效,但不完全正确。我的意思是,这是假装的;这两个都是技术上的成功。但这并不能让我对整个生命周期做出反应请求的一部分。还有一大堆我无法使用的其他回调(例如,加载前、加载后、完成后)。嗯,这类回调有效,但不完全有效。我的意思是,这是假装的;这两种回调在技术上都是成功的。但这不允许我响应请求的整个生命周期。还有一大堆其他回调(例如,之前、加载、完成、之后)我无法使用的。