Rails应用程序在本地服务器上工作,但最重要的页面在Heroku上不起作用



我在Rails中有一个房间预订项目。我的一个页面出现了问题,我在其中修复并推送了更改。在解决了这个问题后,我的主页,新预订页面,出现了一个错误,这个错误只发生在Heroku上,而没有发生在localhost上。(很抱歉,出了问题。)

我看不出它声称我有什么错误。为了解决这个问题,我将Heroku回滚到主页正常工作的状态,而我之前修复的页面则不正常:主页再次工作。然后,我将来自Heroku的git克隆到我的本地机器中,并在没有任何更改的情况下重新推送它,但错误再次出现!我向Heroku Bash确认,服务器上的文件实际上是我推送的。

我真的很感激你的帮助!

Heroku日志中的两个错误:

2014-09-27T21:53:41.455914+00:00 app[web.1]: ActionView::Template::Error (/app/app/views/reservations/new.html.erb:16: syntax error, unexpected keyword_do, expecting keyword_end
2014-09-27T21:53:41.455712+00:00 app[web.1]: /app/app/views/reservations/new.html.erb:28: syntax error, unexpected keyword_ensure, expecting end-of-input):

app/views/reservations/new.html.erb

<div class="row">
  <div class="col-md-3"></div>
  <div class="col-md-6">
    <div class="panel panel-primary radius">
      <div class="panel-heading">
        <h1 class="panel-title text-center" id="reservations_title"><%= t "new_reservation.title" %>:
          <span class="spinner"
                style="display: none; position: relative; top:4px; left:<%= params[:locale]=="en" ? "2px;" : "4px;" %>"
                id="titleSpinner">
          </span>
        </h1>
      </div>
      <div class="panel-body">
        <div class="col-md-12">
          <%= form_for ([@user, @reservation]), remote: true  do |f| %>
              <%= render(:partial => 'form_datetime', locals: { f: f }) %>
              <%= render(:partial => 'shared/notifications', locals: { f: f }) %>
              <%= render(:partial => 'form_rooms', locals: { f: f }) %>
          <% end %>
        </div>
      </div>
    </div>
  </div>
</div>
<%= javascript_include_tag 'reservations' %>

form_datetime

<div class="form-group">
  <span class="glyphicon glyphicon-calendar"></span>
  <%= f.label(:res_date, t("new_reservation.date")) %>
  <%= select_tag(:res_date, options_for_select(generate_reservation_dates(5),params[:res_date]),
                 :class => "form-control") %>
  <span class="glyphicon glyphicon-time"></span>
  <%= f.label(:res_time, t("new_reservation.time")) %>
  <%= select_tag(:res_time, options_for_select(generate_reservation_time(),params[:res_time]),
                 :class => "form-control",
                 :prompt => t("new_reservation.time_prompt")) %>
</div>

form_rooms

<div id="room_container">
  <div class="form-group">
    <%= submit_tag "Show Rooms", :name => "show_rooms", :class => "btn btn-info radius btn-block", :id => "show_rooms" %>
  </div>
  <% if(!params[:res_date].blank? && !params[:res_time].blank?) %>
      <div class="form-group">
        <% rooms_arr = available_rooms_array(params[:res_date],params[:res_time]) %>
        <% if rooms_arr.size == 0 %>
            <div class="alert alert-warning radius">
              <span class="glyphicon glyphicon-exclamation-sign"></span>
              <%= t "new_reservation.no_rooms" %>
            </div>
        <% else %>
            <% rooms_arr.each do |room| %>
                <button value="<%= room.name %>"
                        name="room_name"
                        class="btn btn-primary radius btn-block">
                  <span class="spinner"
                        style="display: none; position: relative; top:5px; left:<%= params[:locale]=="en" ? "8px;" : "11px;" %>"
                        id="buttonSpinner<%= room.name %>">
                  </span>
                  <% if room.contains_grand_piano %>
                    <span class="glyphicon glyphicon-star-empty"></span>
                  <% end %>
                  <%= room.name %>
                </button>
            <% end %>
        <% end %>
      </div>
  <% end %>
</div>

通知

<div class="form-group" id="notifications_container">
  <% if !flash.now.blank? %>
      <% if !flash[:notice].blank? %>
          <div class="alert alert-success radius">
            <span class="glyphicon glyphicon-ok-sign"></span>
            <%= flash.now[:notice].html_safe %>
          </div>
      <% end %>
      <% if !flash[:warning].blank? %>
          <div class="alert alert-warning radius">
            <span class="glyphicon glyphicon-exclamation-sign"></span>
            <%= flash.now[:warning].html_safe %>
          </div>
      <% end %>
      <% if !flash.now[:error].blank? %>
          <div class="alert alert-danger radius">
            <span class="glyphicon glyphicon-remove-sign"></span>
            <%= flash.now[:error].html_safe %>
          </div>
      <% end %>
  <% end %>
</div>

编辑:我还尝试制作了一个新的Heroku应用程序——这个应用程序也存在错误。我怎么能弄清楚为什么在Heroku的某个回滚中它确实有效?

我怀疑您的错误与资产管道在生产模式下处理Javascript的方式有关。我建议在生产中本地运行,看看是否可以重新创建问题。

运行以下内容:

rake assets:precompile RAILS_ENV=production
SECRET_KEY_BASE=not_really_random RDS_DB_NAME=myapp_development rails server -e production -p 4000'

然后连接到localhost:4000,看看您是否重新创建了问题。

我发现了问题!

问题出在form_for:后面的多余空间上

<%= form_for ([@user, @reservation]), remote: true  do |f| %>

很难找到,尤其是因为它在本地服务器上工作!

最新更新