2016-01-20 86 views
0

我想添加一个简单的消息形式与Ajax调用练习,但获取关于模板的错误是缺少。错误显示其设计(创业板)相关的错误。错误是Rails 4,Ajax模板丢失

使用{:locale => [:en],:formats => [:html],:variants => [],:handlers => [:erb]缺少模板消息/ create,application/create ,:builder,:raw,:ruby,:slim,:jbuilder]}。搜查:* “/home/.rvm/gems/ruby-2.2.2/gems/devise-3.5.4/app/views”

守则内留言/ index.html.erb

<h1>Chat</h1> 

<ul id="chat"> 
    <%= render @messages %> 
</ul> 

<%= form_for Message.new, remote: true do |f| %> 

    <input name="authenticity_token" 
      type="hidden" 
      value="<%= form_authenticity_token %>"/> 
    <%= f.text_field :subject, placeholder: "Subject" %> 
    <%= f.text_field :content %> 
    <%= f.submit "Send" %> 
<% end %> 

局部视图是_message.html.erb

<li> 
    <%= message.subject %>: <%= message.content %> 
</li> 

create.js.erb

$('#chat').append("< %= j render(@message) %>"); 
$("#message_content").val(''); 

,并创建控制器动作messages_controller.rb

def create 
    @message = Message.create!(params[:message]) 
    # respond_to do |format| 
    # format.html 
    # format.js { render 'create.js.erb' } 
    # end 
end 
+0

文件' create.js.html'应该叫做'create.js.erb',试试让我们知道 –

+0

对不起,我的错误已经是** create.js.erb ** –

+0

我不认为是设计问题,也许它会尝试在您想运行脚本的同时尝试使用html文件进行响应。为了回应js,你必须写下:'respond_to do | format |如果@message = Message.create!(params [:message])format.js end' –

回答

1

在控制器的顶端定义respond_to :html, :js还是作为@Popescu亚历康斯坦丁说:

respond_to do |format| 
    format.js 
    format.html 
end 
+0

@Faian现在在此更改后出现错误** ActionController :: UnknownFormat **。 –

+0

请尝试我的第一个建议,将'respond_to:js,:html'添加到控制器中的第一行。这将负责在响应标头声明javascript时呈现您的js模板。 –

+0

感谢回来。我已经尝试过,但没有成功。请任何其他建议。 –