【问题标题】:Rails Ajax single line RJS filesRails Ajax 单行 RJS 文件
【发布时间】:2011-03-26 14:14:06
【问题描述】:

我读到的关于 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 文件 我在这里看到的问题是双重渲染(我是菜鸟,所以我不确定)?最好的方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby ajax ruby-on-rails-3 rjs


    【解决方案1】:

    内联 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

    不,再存储一个文件并不傻。它使您的控制器更清洁。看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 行 :)

    【讨论】:

    • 我理解它对大量代码的用处,但我是否觉得整个文件容纳一行很愚蠢?
    • No :) 实际上不止一行。我会稍微更新一下我的答案
    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 2011-07-07
    • 1970-01-01
    • 2011-01-27
    • 2010-10-02
    • 1970-01-01
    • 2011-04-11
    • 2011-11-06
    相关资源
    最近更新 更多