fields_for と jquery を使用して、Rails 3.2 アプリのフォームに部分ビューを追加します。コードは次のとおりです。
def link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render :partial => association.to_s, :locals => {:f => builder, :i_id => 0}
end
link_to_function(name, "add_fields(this, \"#{association}\", \"#{j fields}\")")
end
applicaton.js で:
function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g")
$(link).parent().before(content.replace(regexp, new_id));
}
[フィールドの追加] リンクをクリックすると、部分ビューがレンダリングされ、いくつかの入力フィールドが現在のフォームに追加されます。コードは実行時に問題なく動作します。ただし、統合テスト ( capybara
& launchy
) では、click_link('Add Field')
は何もせず、パーシャルの起動に失敗しました。jquery は統合テストで有効になっていませんか?