簡體   English   中英

重構Rails Controller /視圖以調用Javascript / jQuery

[英]Refactoring Rails Controller / Views to call Javascript / jQuery

我現在正在嘗試重構一些舊代碼。 當前它是這樣的:

控制者

def create
  # do stuff

  respond_to do |format|
    format.html { do stuff }
    format.js { render partial: 'stage_two', locals: { some instance variables } }
  end
end

然后在views/controller_name/_stage_two.js.erb有:

$('.some_element').children().fadeOut( function() {
  $('.some_element').children().remove();
  $('.some_element').html("<%=j render partial: 'form', locals: { stuff } %>");
  $('.some_element .stage_two').fadeIn();
});

因此,基本上,控制器動作本質上是呈現javascript。 那個特定的javascript只是從頁面上刪除一個元素,更改內容,然后將其淡入。是否有更好的方法呢? 我知道通常javascript位於app/assets/javascripts

您當前的實現已相當DRY和標准方式。

html請求還應該呈現相同的局部但具有布局。

js請求應呈現js響應(局部渲染)並更新頁面的一部分。

我知道通常javascript位於app / assets / javascripts中。

這些就是您的資產,這個stage_two.js.erb並不是您的資產文件的本質,而是您對js響應的操作處理。

當然,對於較小的更新操作,您可以使用json請求並接收json響應以更新視圖,但是對於很多情況(尤其是處理大數據時)失敗的情況,當前的實現就可以了……

通常,執行此操作的通常方法是讓控制器返回JSON(我希望它呈現變量的格式化版本),然后讓JS進行常規的AJAX調用並使用JSON數據更新元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM