特定のAJAXリクエストを受けてフォーム要素をdinamically作成しようとしています。ActionView :: Helpers :: FormBuilderを部分的に渡す
これは私の設定です:
ビュー:
<%= link_to 'Next', check_unique_id_students_path, :remote => true %>
<div id="guardian_student_details"></div>
コントローラー:
def check_unique_id
@student = Student.new
@this_form = ActionView::Helpers::FormBuilder.new(:student, @student, @template, {}, proc{})
end
JS:
jQuery("#guardian_student_details").html("<%=escape_javascript(render :partial => "student_details", :locals => { :s => @this_form }) %>");
部分:
デバッグ目的のために<% puts s.text_field :first_name %>
<% puts s.field_helpers %>
は、私は私の部分の先頭に次の行を配置:
<% puts s.class.to_s %>
<% puts s.object.to_s %>
これはアウト出力します。これは動作するはず
ActionView::Helpers::FormBuilder
Student
。 "s" は、私はちょうど2を検証NIL何かであることを意味する
を_app_views_students__student_details_html_erb__2485891544130782916_2214680440' app/views/students/check_unique_id.js.erb:2:in
_app_views_students_check_unique_id_js_erb__3504800328150418937_2214933160' 中:
ActionView::Template::Error (undefined method `text_field' for nil:NilClass):
1: <% puts s.class.to_s %>
2: <p>
3: <%= s.text_field :first_name, :class => 'text_input is_empty' %>
4: <%= s.label :first_name %><strong>*</strong>
5: </p>
6:
アプリ/ビュー/学生/ _student_details.html.erb:3しかし、次のエラーを与えているがレール前の行誰にもアイデアはありますか?私はこれがコントローラで初期化された "@テンプレート"変数と関係があるかどうかはわかりません。私は周りに遊んで、事実上何かを受け入れ、もし印刷されればそれは無しです。 ご協力いただければ幸いです。おかげ
最後の注意:コンソールでこれを試してみてくださいAJAX update of accepts_nested_attributes_for partials
ありがとうAlexandre、私はこの作品を知っていますが、FormBuilderで提案された方法でそれを行うことができれば、私の機能に大きなメリットがあります。 – jalagrange
これはRails 2.3または3+ですか? @template変数がRails 3に存在するかどうかはわかりません。あなたが言及したAJAX更新記事では、そのメソッドを投稿してからコードを変更しました。最終的には、既存のインデックスを取得して増分するのではなく、変更したバージョンのhttp://media.pragprog.com/titles/fr_arr/multiple_models_one_form.pdfを使用しました(特にネストを別のレベル)。 – Pasted
こんにちは、これはレール3.1です。あなたのコメントとリンクをありがとう。 @templateの代わりにview_contextを使ってソリューションを実装しようとしましたが、次のように壊れます:NameError:未定義のローカル変数またはmainメソッドの 'view_context 'メソッド:Object – jalagrange