Представление view_context больше не доступно в представлениях Rails 3? - PullRequest
2 голосов
/ 14 октября 2011

в моем текущем приложении Rails 3.0.9 у меня было несколько шаблонов .js.erb, которые использовали в них view_context, чтобы я мог вызывать fields_for для него во время запроса ajax. Это позволило мне создать некоторые вложенные поля формы атрибута через 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 ]

4 голосов
/ 25 октября 2011

Согласно api docs, он устарел в> = 3 .Источник 3.0.9 вернул себя для view_context.Я думаю, что если вы попробуете без 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) %>");
0 голосов
/ 05 июля 2012

Возможно, вы захотите добавить helper_method :view_context в свой контроллер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...