Ошибка дубликата скрепки - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь загрузить изображение через ajax, используя скрепку.

Я использую qqfileuploader для AJAX, и, похоже, у него нет опции, где я могу определить имя параметра для запроса на публикацию.

Параметры, отправленные с поста ajax:

qqfile=filename.jpg

поэтому в моей модели я связал qqfile с фотографией

  alias_attribute :qqfile, :photo
   has_attached_file :photo
   attr_accessible :title, :photo

когда я загружаю файл через ajax, я получаю следующие ошибки

 Parameters: {"qqfile"=>"Penguins.jpg"}
WARNING: Can't verify CSRF token authenticity
Creating scope :page. Overwriting existing method User.page.
  User Load (1.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
Creating scope :page. Overwriting existing method RoleUser.page.
Creating scope :page. Overwriting existing method Role.page.
  Role Load (1.4ms)  SELECT `roles`.* FROM `roles` INNER JOIN `role_users` ON `roles`.`id` = `role_users`.`role_id` WHERE `role_users`.`user_id` = 1
  SQL (0.7ms)  BEGIN
Creating scope :page. Overwriting existing method Task.page.
[paperclip] Duplicate URL for photo with /system/:attachment/:id/:style/:filename. This will clash with attachment defined in Recipe class

Я не уверен, будет ли проблема с токеном CSRF, на странице есть токен, так что, может быть, мне просто нужно отправить его, я предполагаю, что могу получить переменную с javascript?

Но как обстоят дела с дублирующимся URL-адресом ??? Я правильно пишу псевдонимы? Могу ли я по какой-либо причине не использовать псевдоним объекта скрепки?

мой контроллер тоже очень простой

def create
    @recipe = Recipe.new(params[:recipe])
    @recipe.author_id=current_user.id
    if @recipe.save
        return render :json => @recipe
    else
        return render :text => 'an error occured saving the recipe'
    end
  end

1 Ответ

2 голосов
/ 04 января 2012

Rails генерирует токен безопасности для событий POST на основе сеанса пользователя. Если этот токен отсутствует или не соответствует ожидаемому, сеанс будет сброшен. Смотрите это:

http://guides.rubyonrails.org/security.html#csrf-countermeasures

Что касается дублирующего URL, вы уверены, что ваш шаблон URL достаточно специфичен? Мне кажется, что если вы загрузите файл с тем же именем для того же экземпляра модели, у вас возникнут проблемы. Это поможет увидеть код вашего контроллера.

...