1

在我的索引页面上,我使用 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 中的“缺少部分”错误,因此我正在寻找其他解决方案。任何帮助,将不胜感激。谢谢!

4

0 回答 0