Проблемы передачи виртуальных атрибутов модели в Rails3 - PullRequest
0 голосов
/ 12 декабря 2011

У нас возникли проблемы с передачей некоторых виртуальных атрибутов из моей формы в базовый генератор имени пользователя / пароля, который мы тестируем.

В первом воплощении мы хотим ввести количество имен пользователей / паролей, необходимых в форме:

= simple_form_for(@user, :method => :put, :url => url_for({:controller => :users, :action => :new_batch_create})) do |f|
  = f.text_field :usercount, :placeholder => 'Number of Passwords'
  = f.submit

В нашей пользовательской модели мы имеем это:

...
attr_accessor :usercount  

 def self.generate_batch
     usercount.times do
     username = ""
     password =""
     5.times { username << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
     5.times { password << (i = Kernel.rand(62); i += ((i < 10) ? 48 : ((i < 36) ? 55 : 61 ))).chr }
     User.create!(:username => username, :password => password)
    end
 end
 ...

А в контроллере:

  def new_batch_create
   @user = User.generate_batch(params[:user][:usercount])
   redirect_to root_path
  end

Но когда мы нажимаем на submit, мы получаем ArgumentError:

 wrong number of arguments (1 for 0)

 app/models/user.rb:22:in `generate_batch'
 app/controllers/users_controller.rb:38:in `new_batch_create'

Если мы удалим (params [: user] [: usercount]) из действия контроллера, мы получим это:

 undefined local variable or method `usercount' for #<Class:0x0000010177d628>

И если мы попробуем: usercount, мы получим это:

 undefined method `times' for :usercount:Symbol

Помощь!

1 Ответ

0 голосов
/ 12 декабря 2011

Ваше определение new_batch_create не имеет указанного параметра, но вызов имеет.Вы должны привести их в гармонию.

def self.generate_batch(usercount)
  usercount.times do
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...