【问题标题】:Rails 3.1: Server always processing as HTML, not JSRails 3.1:服务器总是处理为 HTML,而不是 JS
【发布时间】:2015-06-10 18:53:04
【问题描述】:

我正在使用 Rails 3.1.3。我想按以下步骤使用 js.erb 文件:
1.在posts控制器中创建测试动​​作:

def test
    respond_to do |format|
        format.js
    end
end  

2。在 routes.rb 中定义这个动作:

resource :posts do
    collection do
        get 'test'
    end
end

3。创建 test.js.erb 文件:

$('#abc').append('<h1>something</h1>');

4。在 index.html.erb 文件中:

<div id='abc'></div>
<%= link_to "Test", test_posts_path, :remote => true %>

但是,我运行并单击测试链接,它转到带有 url http://localhost:3000/posts/test 的空白页面,并且日志服务器是:

Started GET "/posts/test" for 127.0.0.1 at Sat Feb 11 18:04:36 +0700 2012
Processing by PostsController#test as HTML

所以,服务器不作为 JS 处理,test.js.erb 文件中的 jQuery 不被执行。你能解释一下为什么在控制器中我定义respond_to format.js时服务器处理为HTML吗?
我假设项目中的所有响应都定义为 format.html,所以我的测试操作无法响应 JS?如果正确,我可以更改它吗?
非常感谢

更新:在 assets/javascripts/application.js 中需要使用行:

//= require jquery
//= require jquery_ujs

然后就可以了。

【问题讨论】:

  • jqueryjquery-ujs 是否由您的 index.html.erb 加载?

标签: jquery ruby-on-rails


【解决方案1】:

您确定您的 Gemfile 中有 gem 'jquery-rails' 并在您的布局或 index.html.erb 模板中有 &lt;%= javascript_include_tag "jquery", "jquery_ujs" %&gt; 吗?

【讨论】:

  • 哦,谢谢。在 rails 3.1.3 中,gem 'jquery-rails' 是默认的。在 assets/javascripts/application.js 中,我插入 //= require jquery_ujs 并且它可以工作。当我删除它时,那是我的傻瓜
  • 经过数小时的搜索,这为我解决了类似的问题!谢谢。
【解决方案2】:

试试&lt;%= link_to "Test", test_posts_path(:format =&gt; :js), :remote =&gt; true %&gt;看看会发生什么

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    相关资源
    最近更新 更多