js.erb呈现为布局,未执行

时间:2016-03-14 12:14:51

标签: javascript jquery ruby-on-rails ajax

我正在尝试使用简单的link_to和操作更新范围。当我点击链接'没有任何反应'时,(视频页面不会改变)。

查看对请求的响应,我看到我的布局将js.erb文件的内容插入到布局产生的位置。

我的环境是在OS X上的Docker下运行的Rails 4.2以及AWS上的Elastic Beanstalk。

app/views/admin/games.haml:
%p=link_to("Hint please", {:action=> "hint"}, :remote => true)

%span#hint
  where next?

应用程序/控制器/ admin_controller.rb:

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

应用程序/视图/管理/ hint.js.erb:

$("#hint").text('hello coffee');

rails登录点击链接:

Started GET "/admin/hint" for 192.168.99.1 at 2016-03-14 12:04:33 +0000
Cannot render console from 192.168.99.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Processing by AdminController#hint as JS
    Rendered admin/hint.js.erb within layouts/admin (0.0ms)
    Rendered application/_favicon.haml (8.9ms)
Completed 200 OK in 197ms (Views: 196.0ms | ActiveRecord: 0.0ms)

我按照https://www.alfajango.com/blog/rails-js-erb-remote-response-not-executing/处的调试说明进行操作 - 我发现没有Javascript错误。响应是布局,其中.js.erb的内容呈现为text,其中yield命令位于布局中:

<div id='main'>
    <div class='header'>
        <h1></h1>
        <h2></h2>
    </div>
    <div class='content'>
        $("#hint").text('hello coffee');
    </div>
</div>

这让我发疯,谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

也许您患有Rails bug/feature #10768

即如果您的主要布局被称为application.haml而不是application.html.haml,则会出现此类行为。这是因为默认情况下会为所有格式呈现没有格式扩展名的布局。

我可以看到你正在使用HAML,所以我猜这可能是它。