Ошибка при рендеринге частичного (RoR) прохождения формы как локальной переменной - PullRequest
1 голос
/ 19 марта 2010

В моем основном шаблоне у меня есть следующее:

 <%= render :partial => "delivery_date", :collection => @brand.delivery_dates, :locals => {:form => f} %>

Однако, когда частичное пытается использовать локальную переменную формы, я получаю эту ошибку

Showing app/views/brands/_delivery_date.html.erb where line #2 raised:

wrong number of arguments (0 for 1)
Extracted source (around line #2):

1: <%= delivery_date.id %>
2: <%= form.text_field :name %>
3: <% new_or_existing = delivery_date.new_record? ? 'new' : 'existing' %>
4: <% prefix = "brand[#{new_or_existing}_delivery_date_attributes][]" %>
5: <% fields_for prefix, delivery_date do |dd_f| %>

Кто-нибудь понимает, чтозначит эта ошибка?

На самом деле я хочу сделать

<% form.fields_for delivery_date do |dd_f| %> 

, но это тоже не получается.

Я попытался заменить :locals на :locals => { :f => f } и сослаться на форму, используя f в частичном.Никакого эффекта, ошибка тогда будет undefined method or variable f.

...

Хорошо, вместо того, чтобы просить вас отладить ошибку, вопрос также в том, как отобразить fields_for во вложенной частичной форме:

В основном шаблоне:

<% form_for @object do |f| %>
    <% render :partial => 'child', :collection: @object.child %>
<% end %>

В дочернем шаблоне:

<% form.fields_for child do |c_f| %>
    <%= c_f.text_field :foo %>
<% end %>

Как правильно передать этот объект формы?

Извинитезабыл добавить среду:

Ruby 1.8.7

Rails 2.3.?(надо искать минорную версию, код передо мной отсутствует)

(я знаю, что это вопрос новичка :()

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Странно. Он должен работать, как у вас, с: form или: f. Если вы используете Ruby 1.9, возможно, есть разница в работе локальных переменных. Я бы попробовал :locals => { "f" => f } со строковым ключом вместо символа и посмотреть, поможет ли это. Кроме того, это работает, чтобы использовать более простой случай как :locals => { :x => 2 }?

1 голос
/ 19 марта 2010

вы передаете: form => f вместе с частичным, поэтому вы должны ссылаться на "f", а не на "form"

просто замените все экземпляры "form" на "f" в вашей части, в противном случае ruby ​​/ rails будет думать, что вы пытаетесь вызвать метод конструктора форм (и для этого требуется хотя бы один аргумент, отсюда и сообщение об ошибке)

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