是)我有的:
路线:
resources :tests do
resources :resultsets, :only => [:create, :destroy]
resources :testresults, :only => [:edit, :update] do
resources :testnotes, :only => [:create, :update, :destroy]
end
end
提交的表格:(无附加变量)
<%= form_for [@session, @testresult, @testnote], :remote => true do |f| %>
<%= f.text_field :line %>
<% end %>
@session
是一个测试
@testresult
是一个测试结果
@testnote = Testnote.new
控制器动作:
def create
@testresult = Testresult.find(params[:testresult_id])
@testnote = Testnote.find_or_create_by_line(params[:testnote][:line])
@connection = Testnoteconnection.find_or_initialize_by_testnote_id_and_testresult_id(@testnote.id, @testresult.id)
respond_to do |format|
if @connection.new_record? and @connection.save
format.js
else
format.js { render :partial => 'error' }
end
end
end
def update
@testresult = Testresult.find(params[:testresult_id])
@testnote = Testnote.find(params[:id])
@connection = Testnoteconnection.find_or_initialize_by_testnote_id_and_testresult_id(@testnote.id, @testresult.id)
respond_to do |format|
if @connection.new_record? and @connection.save
format.js
else
format.js { render :partial => 'error' }
end
end
end
什么是错误:
除了响应之外,一切都运行良好。数据库工作正常,并且正在按应有的方式创建条目。但是浏览器向我抛出以下错误:
No route matches {:action=>"update", :controller=>"testnotes", :test_id=>nil, :testresult_id=>#<Testresult id: 13, resultset_id: 4, testobjecttype_id: 114, testtype_id: 1, result: nil, randomed_order: 0, created_at: "2012-11-28 16:22:49", updated_at: "2012-11-28 16:22:49">, :id=>#<Testnote id: 10, line: "asdf", created_at: "2012-12-05 16:06:17", updated_at: "2012-12-05 16:06:17">}
我的想法:
短:我完全不知道!
显然路由很好,否则服务器甚至不会到达控制器操作并执行那些数据库条目。但是创建第二个路由请求的原因是什么?为什么没有正确呈现响应?
编辑:
表单正确提交并正确路由到create
操作,该操作也被正确调用。一切正常,直到format.js
. 问题可能出在视图中吗?
Edit2:(查看和部分)
创建.js
$('#notes_drop').closest('tr').before('<%= j render :partial => "testnotes/testnote", :locals => {:note => @testnote} %>');
测试笔记/测试笔记部分
<tr id='comment_<%= dom_id(note) %>'>
<td>
<%= note.line %>
</td>
<td>
<%= link_to 'delete', test_testresult_testnote_path(@session, @testresult, note), :method => :delete, :remote => true %>
</td>
</tr>