我正在阅读的关于 Rails 3 和 AJAX 的所有内容都说我们应该拥有
respond_to do |format|
@wines = Wine.all(:conditions => {:category => "Sparkling"})
format.js
end
然后是一个单独的 js.erb 文件
$("wines").update("<%= escape_javascript(render :partial => "sparkling")%>")
但是那一行js文件看起来有点极端,我可以这样做吗:
respond_to do |format|
@wines = Wine.all(:conditions => {:category => "Sparkling"})
format.js {render :js => '$("wines").update("<%= escape_javascript(render :partial => "sparkling")%>"')}
end
然后省去多余的 .js.erb 文件 我在这里看到的问题是双重渲染(我是菜鸟,所以我不确定)?执行此操作的最佳方法是什么?
最佳答案
内联 RJS 是一种不好的做法,但您可以这样使用它:
def your_action
@wines = Wine.all(:conditions => {:category => "Sparkling"})
respond_to do |format|
format.js {render :update do |page|
page << '$("wines").update("<%= escape_javascript(render :partial => "sparkling")%>"')
end}
end
end
UPD
不,多存储一个文件并不傻。它使您的 Controller 更清洁。看看 your_action.js.erb
# your controller
def your_action
@wines = Wine.all(:conditions => {:category => "Sparkling"})
end
# your you_action.js.erb
$("wines").update("<%= escape_javascript(render :partial => "sparkling")%>"
那是两行而不是 6 :)
关于ruby-on-rails - Rails Ajax 单行 RJS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5442868/