【发布时间】:2016-04-26 11:20:21
【问题描述】:
我正在尝试使用 Ajax 练习添加一个简单的消息表单,但缺少有关模板的错误。错误表明其设计(宝石)相关的错误。错误是
缺少模板消息/创建、应用程序/使用 {: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
【问题讨论】:
-
你的文件
create.js.html应该叫create.js.erb,试着告诉我们 -
对不起我的错误它已经是 create.js.erb
-
我认为这不是设计问题,也许它会在您想要运行脚本时尝试使用 html 文件进行响应。要回复 js,你必须写:
respond_to do |format| if @message = Message.create!(params[:message]) format.js end -
PopescuAlexandruConstantin 我按照您的建议更改了它。 ' response_to 做 |格式| if @message = Message.create (params[:message]) format.js end' 现在我得到 ActionController::UnknownFormat 错误。
标签: ruby-on-rails ruby ajax ruby-on-rails-4 devise