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 select が機能しています。これは、レコードを表示する 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>

これは、ルックアップ コントローラーからの 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 からの「missing partial」エラーを回避できないため、他の解決策を探しています。どんな助けでも大歓迎です。ありがとう!

4

0 に答える 0