私のインデックス ページでは、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」エラーを回避できないため、他の解決策を探しています。どんな助けでも大歓迎です。ありがとう!