Могут ли "локальные жители" использоваться с "коллекцией" при рендеринге партией в Rails?
Все работает нормально, когда я пытаюсь сделать частичное, как это:
= render :partial => "/shared/enquiry/car_type", :collection => @enquiry.available_car_types
Однако, если я также хочу передать переменную (в этом случае "путь", потому что я разделяю это частичное через две формы), путь недоступен мне:
= render :partial => "/shared/enquiry/car_type", :collection => @enquiry.available_car_types, :locals => {:path => customers_enquiry_path}
Я пробовал перемещать вещи, но ничего не работает, и я полагаю, что нельзя использовать локальных жителей с коллекциями. Любая помощь будет оценена.
Гав
Ответы
Ответ 1
Нет, вы не можете использовать их вместе. Ref this
Я думаю, вам нужно сделать что-то вроде следующего
<% for ad in @enquiry.available_car_types %>
<%= render :partial => "/shared/enquiry/car_type", :locals =>{ :ad => ad, :path =>customers_enquiry_path } %>
<% end %>
Ответ 2
Как сказано в руководствах, укажите опцию :as
при вызове частичного
![enter image description here]()
Ответ 3
Для Rails 4.x, если вы передаете коллекцию непосредственно в визуализацию (которую вы должны делать, если хотите использовать автоматический частичный выбор для гетерогенной коллекции), следующий параметр интерпретируется как хэш локалей.
Попробуйте следующее:
= render @enquiry.available_car_types, :path => customers_enquiry_path
Ответ 4
Какую версию вы используете? Используя мой 2.3.5, я могу сделать именно это:
render :partial => "/site_articles/article", :collection => @site_articles, :locals => { :footer => true }
который вы можете найти в других местах, таких как 3.4.6 this.
Ответ 5
@Gav, вы сталкиваетесь с двумя проблемами.
-
render
игнорирует параметр locals
при передаче коллекции в качестве первого параметра. Вам нужно вместо этого указать параметры параметра partial
и collection
, как это было в вашем втором примере.
-
path
, вероятно, попадает в область зарезервированного слова. Попробуйте использовать что-то еще.