Javascript在Heroku中不起作用,但在本地环境中不起作用

时间:2014-01-07 03:48:20

标签: javascript ruby-on-rails heroku

我的javascript在本地环境中运行,但在Heroku上运行。

该文件是“destroy.js.erb”,它位于视图中,与index.html.erb(使用javascript)相同。

以下是我怀疑发生错误的Heroku日志:

2014-01-07T03:34:31.980578+00:00 app[web.1]: 
2014-01-07T03:34:31.980578+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets/application-ed404d2f6b226ecfcf36b0b53bc646a7.js"):
2014-01-07T03:34:31.980578+00:00 app[web.1]: I, [2014-01-07T03:34:31.976356 #2]  INFO -- : Started GET "/assets/application-ed404d2f6b226ecfcf36b0b53bc646a7.js" for 24.24.157.128 at 2014-01-07 03:34:31 +0000
2014-01-07T03:34:31.980578+00:00 app[web.1]: F, [2014-01-07T03:34:31.977454 #2] FATAL -- : 
2014-01-07T03:34:31.980578+00:00 app[web.1]:   vendor/bundle/ruby/2.0.0/gems/actionpack-4.0.1/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'

destroy.js.erb :( JavaScript通过fadeOut而不是页面刷新称为删除用户)

$('#<%= dom_id(@user) %>').fadeOut();

index.html.erb:

<h3>All Users List</h3>

<head>  <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script> </head>

    <% @users.each do |user| %>

      <%= div_for user do %>

        <%= link_to "User #{user.firstname} #{user.lastname}", user %>
        <font color='green'><%= user.email %></font>

        <div class="actions">
         <td><%= link_to 'View Detail', user %></td>
         <td><%= link_to 'Edit', edit_user_path(user) %></td>
         <td><%= link_to 'Delete User', user_path(user), method: :delete, remote: true, data: {confirm: 'Are you sure?'} %></td>
         <p>
        </div>

      <% end %>

    <% end %>

<%= link_to 'Create New User', new_user_path %>

布局/ application.html.erb:

<!DOCTYPE html>
<html>
<head>
  <title>Crud</title>
  <%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
  <%= javascript_include_tag "application", "data-turbolinks-track" => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

编辑:这是应用:http://sheltered-sea-8479.herokuapp.com/users

有谁知道如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:2)

我将序言我要说的是我知道这个想法就像是一个小问题的大规模毁灭,但是这个问题让我头撞墙几天,这是我找到的唯一方法。解决它......

尝试增加config.assets.version文件中的config/production.rb值。它会使您的应用的所有资产失效,但它也会为该文件重新生成md5指纹,并且应该帮助应用再次识别它。

示例:

config.assets.version = '1.0'更改为config.assets.version = '1.1'

<强>更新

听起来Heroku并没有为您预编制您的资产。尝试运行:RAILS_ENV=production bundle exec rake assets:precompile然后重新部署。如果您未使用bundler,则可以从上述命令中删除bundle exec