Неверное количество аргументов для помощника - PullRequest
0 голосов
/ 26 октября 2010

Я пытаюсь сгенерировать форму из проанализированного json (в хэш-форме) с помощью этого помощника

def hash_to_form(hash, fields, legend)
    fields.fields_for do |b|
      concat('<fieldset><legend>', legend, '</legend>')
      hash.each do |key, attr|
        if hash[key].is_a? Hash
          hash_to_form(hash[key], b, key)
        else
          concat("<div class=\"field\">")
          concat(b.label(key, key))
          concat(b.text_field(key, :value => attr))
          concat("</div>")
        end
      end
    end
  end

Но это дает мне неправильное количество аргументов (0 для 1), когда я пытаюсь вызвать вспомогательный метод. Что не имеет смысла, так как принимает 3 аргумента?

1 Ответ

2 голосов
/ 26 октября 2010

Не ваш помощник имеет неправильное количество аргументов, это ваш fields_for вызов:

fields.fields_for do |b|

Этот метод принимает имя ассоциации.Если пользовательская модель имеет адреса по_меню, метод вызывается так:

f.fields_for :addresses do |address_fields|

Исправление этого должно исправить вашего помощника.

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