I'm trying to create a record from a form. I've used railscast 136 as ground work. When I trying to submit I get a 500 error for missing partial. I've created the controller correlated javascript view but it is requesting a view with the same name as the model.
我正在尝试从表单创建记录。我使用railscast 136作为地面工作。当我尝试提交时,我因缺少部分而得到500错误。我已经创建了控制器相关的javascript视图,但它正在请求一个与模型同名的视图。
error message
Rendered appointments/create.js.erb (3.8ms) Completed 500 Internal Server Error in 12ms
渲染约会/ create.js.erb(3.8ms)在12ms内完成500内部服务器错误
ActionView::Template::Error (Missing partial appointments/appointment with {:locale=>[:en], :formats=>[:js, :html], :handlers=>[:erb, :builder, :coffee]}. Searched in: * "/Users/gjores/Sites/Rails/verkstad_test/app/views" ): 1: $('#appointments').append('<%= j render(@appointment) %>'); app/views/appointments/create.js.erb:1:in
_app_views_appointments_create_js_erb___2325925946390315228_70273089113920' app/controllers/appointments_controller.rb:16:in
create'ActionView :: Template :: Error(缺少部分约会/约会{:locale => [:en],:formats => [:js,:html],:handlers => [:erb,:builder,:coffee]搜索:*“/ Users / gjores / Sites / Rails / verkstad_test / app / views”):1:$('#appointmentments')。append('<%= j render(@appointment)%>') ; app / views / appointmentments / create.js.erb:1:in _app_views_appointments_create_js_erb___2325925946390315228_70273089113920'app / controllers / appointmentments_controller.rb:16:increate'
Controller
def create
@appointment = Appointment.new(params[:appointment])
if @appointment.save
respond_to do |format|
format.html { redirect_to new_appointment_path, :notice => "Successfully created appointment." }
format.js
end
else
render :action => 'new'
end
end
appointments/new.html.erb
<div id="appointments">
<%= render 'shared/appointment_part' %>
</div>
<% title "New Appointment" %>
<table>
<% @students.each do |s| %>
<%= form_for @appointment, :remote => true do |f|%>
<%= f.error_messages %>
<tr>
<td><%= s.name %></td>
<td><%= f.label :week %></td>
<td><%= f.number_field :week %></td>
<td><%= f.label :teacher_id %></td>
<td><%= f.collection_select(:teacher_id, Teacher.all, :id, :name) %></td>
<%= f.hidden_field :student_id, :value => s.id %>
<td><%= f.submit %></td>
</tr>
<% end %>
<% end -%>
</table>
<p><%= link_to "Back to List", appointments_path %></p>
appointments/create.js.erb
$('#appointments').append('<%= j render(@appointment) %>');
Routes
appointments GET /appointments(.:format) appointments#index
POST /appointments(.:format) appointments#create
new_appointment GET /appointments/new(.:format) appointments#new
edit_appointment GET /appointments/:id/edit(.:format) appointments#edit
appointment GET /appointments/:id(.:format) appointments#show
PUT /appointments/:id(.:format) appointments#update
DELETE /appointments/:id(.:format) appointments#destroy
teachers GET /teachers(.:format) teachers#index
POST /teachers(.:format) teachers#create
new_teacher GET /teachers/new(.:format) teachers#new
edit_teacher GET /teachers/:id/edit(.:format) teachers#edit
teacher GET /teachers/:id(.:format) teachers#show
PUT /teachers/:id(.:format) teachers#update
DELETE /teachers/:id(.:format) teachers#destroy
notice_students POST /students/notice(.:format) students#notice
students GET /students(.:format) students#index
POST /students(.:format) students#create
new_student GET /students/new(.:format) students#new
edit_student GET /students/:id/edit(.:format) students#edit
student GET /students/:id(.:format) students#show
PUT /students/:id(.:format) students#update
DELETE /students/:id(.:format) students#destroy
2 个解决方案
#1
5
Your stack trace shows
您的堆栈跟踪显示
Missing partial appointments/appointment
So it looks like rails is trying to render a partial called appointments/appointments.html or appointments/appointments.js
因此看起来rails试图呈现部分名为appointmentments / appointmentments.html或appointmentments / appointmentments.js
Does a file called appointments.js.erb or appointments.html.erb exist?
是否存在名为appointmentments.js.erb或appointmentments.html.erb的文件?
If not then create it.
如果没有,那么创建它。
I however suspect that what you are trying to do is show your appointment as I think you want the code below to update the html of some element on your page
我怀疑你要做的是显示你的约会我认为你想要下面的代码来更新页面上某些元素的html
$('#appointments').append('<%= j render(@appointment) %>');
I think you need this line to red
我想你需要这条线为红色
$('#appointments').append('<%= j render :partial => 'appointments/appointment', :formats => :html %>');
Your html view partial should be appointments/_appointment.html.erb
你的html视图部分应该是约会/ _appointment.html.erb
#2
1
This is because you are rendering a partial in a view appointments/new.html.erb and not in the controller create method .
这是因为您在视图约会/ new.html.erb中渲染部分而不是在控制器创建方法中。
Since the partial is defined in the view appointments/new.html.erb, so the corresponding javascript view should be appointments/new.js.erb.
由于partial是在视图约会/ new.html.erb中定义的,因此相应的javascript视图应该是appointmentments / new.js.erb。
#1
5
Your stack trace shows
您的堆栈跟踪显示
Missing partial appointments/appointment
So it looks like rails is trying to render a partial called appointments/appointments.html or appointments/appointments.js
因此看起来rails试图呈现部分名为appointmentments / appointmentments.html或appointmentments / appointmentments.js
Does a file called appointments.js.erb or appointments.html.erb exist?
是否存在名为appointmentments.js.erb或appointmentments.html.erb的文件?
If not then create it.
如果没有,那么创建它。
I however suspect that what you are trying to do is show your appointment as I think you want the code below to update the html of some element on your page
我怀疑你要做的是显示你的约会我认为你想要下面的代码来更新页面上某些元素的html
$('#appointments').append('<%= j render(@appointment) %>');
I think you need this line to red
我想你需要这条线为红色
$('#appointments').append('<%= j render :partial => 'appointments/appointment', :formats => :html %>');
Your html view partial should be appointments/_appointment.html.erb
你的html视图部分应该是约会/ _appointment.html.erb
#2
1
This is because you are rendering a partial in a view appointments/new.html.erb and not in the controller create method .
这是因为您在视图约会/ new.html.erb中渲染部分而不是在控制器创建方法中。
Since the partial is defined in the view appointments/new.html.erb, so the corresponding javascript view should be appointments/new.js.erb.
由于partial是在视图约会/ new.html.erb中定义的,因此相应的javascript视图应该是appointmentments / new.js.erb。