Ruby on Rails передает переменные формы в контроллер - PullRequest
0 голосов
/ 15 декабря 2011

Когда форма отправляется, она передает эти параметры.

Parameters:

{"utf8"=>"✓",
 "_method"=>"copyfile",
 "authenticity_token"=>"yM2v0dJysGuw7zRIhuhY7xHMywuDRjfBqzpJc0/LCqE=",
 "redocument"=>{"odocument_id"=>"14"},
 "commit"=>"Update Redocument",
 "method"=>"copyfile",
 "id"=>"66"}

Я хотел бы сослаться на odocument_id в параметрах, передаваемых в контроллере.

В моем контроллере у меня есть

  def copyfile
    @oldfile = Redocument.find(params[:id])
    @newfile = Redocument.find(params[:id]).dup

    @newfile.odocument_id = params[:odocument_id]
    if @newfile.save!
      dupfile(@oldfile.redocument.to_s, @newfile.redocument.to_s)
      flash[:notice] = 'Record was successfully cloned.'
    else
      flash[:notice] = 'Record ERROR: Item can\'t be cloned.'
    end

    redirect_to(:back)
  end

У меня успешно создается файл в новой папке ID. Тем не менее, я классифицирую свою структуру каталогов как odocument_id / redocument_id /. Я не могу обновить odocument_id до вызова функции dupfile для создания папок и копий. Когда я вижу загрузку @newfile в MySQL, он создает значение NULL.

1 Ответ

1 голос
/ 15 декабря 2011

У вас неправильный доступ к параметру: odocument_id.Как видно из полученных параметров "redocument"=>{"odocument_id"=>"14"}, «odocument_id» находится в параметре «redocument».Поэтому вам нужно сделать это следующим образом:

@newfile.odocument_id = params[:redocument][:odocument_id]

Вы делали params[:odocument_id], который не существует, поэтому вы получали нулевое значение.

Также вы можете просто сделать1008 *

@newfile = @oldfile.dup

и больше не нужно искать файл.

...