Rails 3 Ajax无法将新创建的记录附加到现有表的底部

时间:2012-11-14 04:28:20

标签: ajax ruby-on-rails-3 jquery

在我的索引页面上,我使用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)%>”

 $("#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中找到“缺少部分”错误,我正在寻找其他解决方案。任何帮助,将不胜感激。谢谢!

0 个答案:

没有答案