javascript - JS 模板呈现但在 Rails 3.0.7 中没有任何反应

标签 javascript jquery ruby-on-rails erb

显示.html.erb:

...
<%= link_to "Start Retrieval", {:action => "retrieve"}, :remote => true %>
<div id="notices">
       <%= render :partial => 'notice' %>  
</div>
....

_notice.html.erb:

<div>Notice</div>

检索.js.erb:

#alert('test') //=> does not work
$('#notices').append("<% escape_javascript render :partial => 'notice' %>");

Controller :

def retrieve
    respond_to do |f|
       #f.js {render :js => "alert(typeof jQuery != 'undefined')"} #=> true
       f.js {render :js => "retrieve"} #=> nothing happens
    end
end

输出:

Started GET "/model/1/retrieve" for 127.0.0.1 at 2011-06-24 21:09:44 +0100
  Processing by ModelController#retrieve as JS
  Parameters: {"id"=>"1"}
Completed 200 OK in 50ms (Views: 49.2ms | ActiveRecord: 0.0ms)

如您所见,retrieve 动词不直接涉及模型,我也没有将 @model var 传递给模板。我的印象是这只是速记,不应该影响事情。我错了吗?

最佳答案

你应该能够做到:

respond_to do |f|
  f.js {}
end

这将呈现与操作同名的 js.erb 文件 (retrieve.js.erb)。

您正在做的是将字符串“retrieve”呈现为纯 javascript,相当于在 js 文件中只包含“retrieve”,如下所示:

<javascript>
retrieve
</javascript>

关于javascript - JS 模板呈现但在 Rails 3.0.7 中没有任何反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473689/

相关文章:

ruby-on-rails - 在 Ruby 中,如何检查 .html.erb 模板生成的类?

javascript - 为什么在 JS 中调用 async 函数不会阻塞?

javascript - 未收到 node.js POST 回调

javascript - 在我的案例中如何隐藏和显示 div 边框线?

jquery - 所有 ajax .load() 请求完成后执行函数

jquery - jQuery 的 ReplaceWith() 是否也会删除事件处理程序?

ruby-on-rails - 如何用 Oj gem 替换 Ruby 中的 to_json?

javascript - Angular 2 routerLink 无法在路由器导出内工作

javascript - 使用带有输入字段的 Bootstrap 表

sql - 通过 'has_many'获取属性平均值