左列 div 是列表的列表。我正在尝试使用 AJAX 添加新列表。我正在关注截屏视频http://railscasts.com/episodes/136-jquery-ajax-revised但出现错误。create 操作似乎有问题。请注意,当我刷新页面时,会出现新列表,因此它正在被创建并添加到数据库中。
这是我在尝试提交新列表的名称时得到的 500 内部服务器错误(来自使用网络选项卡中的 POST 的列表文件):
列表中的 ActionView::MissingTemplate#create
显示 /Users/jeff/Documents/rails_projects/grocery-beta/app/views/lists/create.js.erb 其中第 3 行提出:
Missing partial lists/list with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/Users/jeff/Documents/rails_projects/grocery-beta/app/views" * "/usr/local/rvm/gems/ruby-1.9.3-p194/gems/devise-2.2.3/app/views"
提取的源代码(在第 3 行附近):
1: $('#new_list').remove();2: $('#new_link').show();3: $('#lists').append('<%= j render(@list) %>');
app/views/lists/create.js.erb:3:in `_app_views_lists_create_js_erb__870295634789681698_70311054285220'app/controllers/lists_controller.rb:36:in `create'
这是我的create.js.erb
文件:
$('#new_list').remove();
$('#new_link').show();
$('#lists').append('<%= j render(@list) %>');
这是我的文件中的创建操作:lists_controller.rb
def create
@list = List.create!(params[:list])
respond_to do |format|
format.html { redirect_to root_url }
format.js
end
end
这是我的根页面,home.html.erb
:
<div id="main-left">
<div id="main-left-1">
<%= link_to 'Add List', new_list_path, class: "button", id: "new_link", remote: true %>
</div>
<ul id="lists" data-update-url="<%= sort_lists_url %>">
<% @lists.each do |list| %>
<%= content_tag_for :li, list do %>
<%= link_to list.name, list, :remote => true, :class => "link" %>
<% end %>
<% end %>
</ul>
</div>
这是我的_form.html.erb
临时文件:
<%= form_for @list, remote: true do |f| %>
<% if @list.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@list.errors.count, "error") %> prohibited this list from being saved:</h2>
<ul>
<% @list.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.text_field :name %>
</div>
<% end %>
这是我的application.html.erb
文件:
<!DOCTYPE html>
<html>
<head>
<title>
Grocery List
</title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
<link href='http://fonts.googleapis.com/css?family=Noto+Serif|Gabriela' rel='stylesheet' type='text/css'>
</head>
<body>
<div id="wrapper">
<%= render 'layouts/header' %>
<div id="main">
<%= yield %>
</div><!-- main -->
</div><!-- wrapper -->
</body>
</html>
这是我的new.js.erb
文件:
$('#new_link').hide().after('<%= j render("form") %>');