#ruby-on-rails-3 #jquery #ruby-on-rails-3.1
#ruby-on-rails-3 #jquery #ruby-on-rails-3.1
Вопрос:
в моем текущем приложении Rails 3.0.9 у меня было несколько шаблонов .js.erb, в которых использовался view_context, поэтому я мог вызывать fields_for для него во время запроса ajax. Это позволяло мне создавать некоторые вложенные поля формы атрибутов через ajax. Но после обновления до Rails 3.1 я получаю следующую ошибку:
ActionView::Template::Ошибка (неопределенная локальная переменная или метод `view_context’ для #<#:0x1057b9f70>):
Было ли это удалено / устарело недавно? Есть ли другой способ, которым я могу создавать вложенные fields_for для входных данных без использования родительского FormBuilder? Кажется, view_context все еще доступен в контроллере, но я надеялся сохранить эту генерацию разметки на уровне представления.
Мой шаблон .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) %>");
Ответ №1:
Согласно документам api, он устарел в >= 3. Источник 3.0.9 вернул self для 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) %>");
Ответ №2:
Возможно, вы захотите добавить helper_method :view_context
свой контроллер.