2017-02-17 50 views
1

网站正常工作在本地主机上,但是当上传到Heroku的,create.js.erb输出为文本,并向地址的结果是:网站/ supporters.js,不知道为什么。该网站只是一个带有支持者表格的页面,并且在提交时,应该呈现页面上的表格和支持者列表。js.erb输出的文本,而不是JS

页:

<div class="row"> 
    <div class="col-md-12"> 
    TEXT 
    </div> 
</div> 
<br> 


<div class="row"> 
    <div class="col-md-4"> 
    <div id="home_form"> 
     <%= render "supporters/form" %> 
    </div> 
    </div> 
    <div class="col-md-2"> 
    </div> 
    <div class="col-md-6" id="home_list"> 
    <br> 
    <%= render 'supporters/show_supporters' %> 
    </div> 
</div> 

控制器:

class SupportersController < ApplicationController 

    ... 
    def create 
    @supporter = Supporter.new(supporter_params) 
    @supporters = Supporter.all.order(created_at: :desc) 

    respond_to do |format| 
     format.js 
    end 
    end 

    ... 

create.js

<% if @supporter.save %> 
    $("#home_list").html("<%= j render 'show_supporters' %>") 
    $("home_form").html("<%= j render 'form' %>") 
<% else %> 
    $("#home_form").html("<%= j render 'form', supporter: @supporter %>") 
    $('#build_error').remove(); 
    <% if @supporter.errors.any? %> 
     var build_error = "<div class='alert alert-danger' id='build_error'>"; 
     build_error += "You've got <%= pluralize(@supporter.errors.count, 'error') %>."; 
     build_error += "<ul id='error_explanation'>"; 
     <% @supporter.errors.full_messages.each do |msg| %> 
     <% if msg === "Ip has already been taken" %> 
      <% msg = "You've already posted your support. Thanks!" %> 
     <% end %> 
     build_error += "<li><%= j msg %></li>"; 
     <% end %> 
     build_error += "</ul>"; 
     build_error += "</div>"; 
     $(build_error).insertBefore("#home_form"); 
    <% end %>   
<% end %> 
+0

你能具体谈谈这个问题,你期待什么? “create.js.erb输出的结果为文本”? –

+0

它在这个网页https://deadindustry-newnew-recruit.herokuapp.com/ ...当你提交到表单时,它将吐出的元素渲染为文字 – daveasdf

回答

0

浏览器如何解释来自服务器的响应的内容取决于(其中包括)Content-Type标头。

如果内存为我服务:在这种情况下,因为控制器没有任何其他格式而不是js响应,它也会响应js的html/text内容类型请求。

尝试添加另一种格式,例如:format.any { render plain: 'Hello' }在您的format.js之后,调试问题。

如果您看到'Hello'字符串而不是您的js,那么这是由于您的请求中缺少Content-Type标头。

我希望这会有所帮助。

+0

抱歉,没有帮助! :)出现了同样的事情。 – daveasdf

相关问题