在我的索引页面上,我使用 Ajax 返回一个查询结果表。我也使用 Ajax 成功创建了一条新记录。我的问题是试图将新记录立即附加到查询结果表中。我见过 Railscast 136 并且无法让它工作,可能是因为我使用的是 Ruby 1.8.7。
这是我的索引方法,来自返回初始结果的查找控制器
def index
@lookuprows = Lookup.return_lookup_rows(:pubyear, :codetype)
respond_to do |format|
format.html
format.js
end
end
这是 index.js.erb (我确实从 Railscast 136 得到了这个,除了 Ryan 有"<%= j render(@lookuprows) %>"。我无法让它工作。我不断收到一个丢失的部分错误. 我可以让它工作的唯一方法是制作一个 _lkupshow.html.erb 部分)。
$("#lkupresultarea").html("<%= j render("lkupshow") %>
我有 ajax 选择工作,这是 lkupshow 部分显示记录的一些代码
<table class="lkupdata">
<tbody class="lkuptbody">
<% @lookuprows.each do |lkup| %>
<tr>
<td><input value="<%= lkup.codevalue %>" /></td>
<td><input value="<%= lkup.parameters %>" /></td>
<td><input value="<%= lkup.remark %>" /></td>
</tr>
<% end %>
</tbody>
</table>
在同一个部分,我在它上面有一个表格
<div class="lkupnewdiv">
<%= form_tag(lkupcreate_path, :remote => "true") do %>
<table>
<tr>
<td><%= text_field(:lookup, :codevalue) %></td>
<td><%= text_field(:lookup, :parameters) %></td>
<td><%= text_field(:lookup, :remark) %></td>
</tr>
<tr><td><%= submit_tag("Submit", :id=> "lkupsubmit") %></td></tr>
</table>
<% end %>
</div>
这是查找控制器的创建方法,保存有效
def create
@lookup = Lookup.new
@lookup.codevalue = params[:lookup][:codevalue]
@lookup.parameters = params[:lookup][:parameters]
@lookup.remark = params[:lookup][:remark]
@lookup.save
respond_to do |format|
format.html
format.js
end
end
最后,这里是 create.js.erb,我在这里也遇到了同样的“缺少部分”错误。
$(".lkupnewdiv").hide();
$(".lkupdata > tbody:last").append('<%= j render(@lookup) %>');
所以当我添加我的新记录时,它确实保存了,但是浏览器中的表单没有任何迹象表明这一点。我可以将我的创建方法更改为此吗?
def create
@lookup = Lookup.new
@lookup.codevalue = params[:lookup][:codevalue]
@lookup.parameters = params[:lookup][:parameters]
@lookup.remark = params[:lookup][:remark]
@lookup.save
# Call the whole query again? pubyear is one of the variables, just didnt feel like
# typing them all in
@lookuprows = Lookup.return_lookup_rows(:pubyear, :codetype)
respond_to do |format|
format.html
# Shouldnt the @lookuprows be accessible with the path below?
format.js { redirect_to lkupshow_path }
end
end
由于我无法克服 create.js.erb 中的“缺少部分”错误,因此我正在寻找其他解决方案。任何帮助,将不胜感激。谢谢!