在Rails 3视图中是否不再提供view_context?

时间:2011-10-13 23:23:37

标签: ruby-on-rails-3 jquery ruby-on-rails-3.1

在我当前的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) %>");

2 个答案:

答案 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