動的データをフォームのセクションにロードするために AJAX のみが使用するテンプレートにフォーム変数を渡すにはどうすればよいですか?
レッスンに属しているコース フォームがあり、レッスンには多くの採点可能なアイテムがあります。レッスン選択入力が変更された場合...選択したレッスンを反映するために、gradable_items のネストされたフィールドを更新する必要があります。
jQuery ->
l = $("#course_lesson_id")
l.on "change", ->
$("#gradable_items_container").load("gradable_items_inputs?lesson=#{l.val()}")
上記のスクリプトは機能します。gradable_items_inputs.html.erb のコードをターゲット div にロードします。
gradable_items_inputs.html.erb
GradedItem は、各 GradableItem の成績が格納されるモデルです。GradedItem は :gradable_item に属し、レッスンに属します。
<%= f.simple_fields_for :graded_items do |graded_item| %>
<%= gradable_item.name %>
<%= graded_item.input :gradable_item_id, input_html: { value: gradable_item.id } %>
<% end %>
上記のコードをgradable_items_inputs.html.erbファイルに入れると、「未定義のローカル変数 "f"」エラーが発生します。f.simple_fields_for 呼び出しを AJAX テンプレート ファイルの外に移動しようとしましたが、同じエラーが発生しましたが、graded_item 変数に対してです。いずれにせよ、そのフォーム変数を JavaScript 経由でテンプレートに渡す必要があります。
これは私のコードがどのように見えるかの概要です:
parent form do |f|
f.association :lesson
nested_form do |n|
// the fields that go here are dependent on the lesson that is chosen above. A model called LessonGradableItem is a join model that holds what items a particular lesson should be graded against. I generate an input for each item...then save the result in the GradedItem model.
// since these inputs are loaded via AJAX from an external template, the form is being broken...how can I pass the n form variable to that file?
end
end
フォーム変数をデータ パラメータと URL パラメータとして渡そうとしましたが、gradable_items_inputs.html.erb ファイルで文字列として解釈されます。