[英]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.