ruby-on-rails - Rails Ajax 单行 RJS 文件

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

我正在阅读的关于 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/

相关文章:

ruby-on-rails - 如何通过 session ID 找到设计用户?

ruby-on-rails - 是否可以将 Rails Controller 文件放在 app/controllers 子目录中?

ruby-on-rails - 这个 gem 存在吗?

javascript - 浏览器使用缓存的 JavaScript Assets ,尽管它们在 Rails 3.1 中被修改

PHP 生成的 javascript 未执行

jquery - 在ajax中显示值

ruby-on-rails - 如何使用 Facebook OAuth 和 Rails Devise gem 在 iOS native 应用程序中创建 session ?

ruby - 为什么 Middleman 在安装后不包含 rb-inotify 和 therubyracer gem?

ajax - Wordpress Rest API 登录

javascript - 使用 Javascript 进行部分回发