создание контроллера rails вместо обновления при передаче в id - PullRequest
0 голосов
/ 08 февраля 2012

Я пытаюсь добавить файл в модель, используя qqfile (хотя это на самом деле здесь не актуально).

Я смотрю на параметры, передаваемые на сервер для обновления, и у меня есть

{ id: 63, photo: 'foto_file.jpg'}

Насколько я понимаю, если объект будет передан с параметром id, rails поймет это как уже существующий объект и обновит эту модель.Если параметр id отсутствует, Rails будет использовать create.

Это не правильно ??Как в этом случае я могу сказать рельсам обновить, а не создать?Я предполагаю, что больше кода здесь не нужно, так как мои контроллеры действительно не помогут с решением, потому что я думаю, что решение принимается rails до того, как оно действительно попадет в контроллер.Но я рад опубликовать код контроллера, если он необходим.

--------------- мой javascript, использованный для обновления или создания модели ---------------------

render: function(){
        var start_form=HandlebarsTemplates['user/userForm'](user.attributes);
        $(this.el).html(start_form);

        var uploader = new qq.FileUploader({
            element: document.getElementById('file-upload'),
            action: '/users',
            onSubmit: function(id, fileName){

                if(MyApp.user.id){
                 uploader.setParams({
                    id: MyApp.user.id
                    });
                }
            },
            debug: true
        });


    },

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Метод update используется только при отправке запроса PUT, а не POST.Убедитесь, что вы используете метод PUT.(Если вы покажете код своей формы, я могу дать более конкретный ответ).

Обновление - С вашим кодом попробуйте добавить это в качестве параметра к вашему вызову qq.FileUploader:

params: {
  _method: "put"
}

Rails будет искать параметр _method для обработки запросов PUT / DELETE.

0 голосов
/ 11 февраля 2012

Я не смог заставить работать метод javascript Дилана, поэтому в своем контроллере я перенаправил на свое обновление, если в ответе был идентификатор.

def create
   if params[:id]
      return self.update
   end
   #then all my regular create stuff here
end

def update
   #all the usual update stuff
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...