在我的索引页面上,我使用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 partial的一些显示记录的代码
<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>
以下是Lookup控制器中的create方法,保存工作
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中找到“缺少部分”错误,我正在寻找其他解决方案。任何帮助,将不胜感激。谢谢!