在我当前的Rails 3.0.9应用程序中,我有一些在其中使用view_context的.js.erb模板,因此我可以在ajax请求期间调用fields_for。这让我通过ajax构建了一些嵌套的属性表单字段。但升级到Rails 3.1后,我收到了以下错误:
ActionView :: Template :: Error(未定义的局部变量或方法`view_context'用于#<#:0x1057b9f70>):
最近是删除/弃用了吗?有没有其他方法可以构建嵌套的fields_for输入而不需要父FormBuilder?似乎view_context在控制器中仍然可用,但我希望在View层中保留这个标记生成。
我的.js.erb模板看起来像这样
<% meal_item_fields = view_context.fields_for :meal_items, Meal.new.meal_items.new, :child_index => "new_meal_items" do |f|
render :partial => 'meal_items/meal_item_fields', :locals => {:meal_item_form => f}
end
%>
$("#meal-items").append("<%= escape_javascript(meal_item_fields) %>");
答案 0 :(得分:4)
根据api docs it is deprecated in >= 3。 3.0.9的源为view_context返回self。我想如果你在没有view_context的情况下尝试它就可以了。
<% meal_item_fields = fields_for :meal_items, Meal.new.meal_items.new, :child_index => "new_meal_items" do |f|
render :partial => 'meal_items/meal_item_fields', :locals => {:meal_item_form => f}
end %>
$("#meal-items").append("<%= escape_javascript(meal_item_fields) %>");
答案 1 :(得分:-1)
您可能希望在控制器中添加helper_method :view_context
。