Rails 4,缺少Ajax模板

时间:2016-01-20 14:39:03

标签: ruby-on-rails ruby ajax ruby-on-rails-4 devise

我正在尝试使用Ajax调用添加一个简单的消息表单,但是缺少关于模板的错误。错误显示其设计(gem)相关的错误。错误是

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

messeges / 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

1 个答案:

答案 0 :(得分:1)

在控制器顶部定义respond_to :html, :js,或者像@Popescu一样,Alexandru Constantin说:

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