我正在尝试使用qqfile将文件添加到模型中(尽管这里真的不相关)。
我查看传递给服务器进行更新的参数,我有
{ id: 63, photo: 'foto_file.jpg'}
我的理解是,如果使用id参数传递对象,rails会将其理解为已存在的对象,并更新该模型。如果没有id参数,Rails将使用create。
这不正确吗?在这种情况下,我如何告诉rails更新而不是创建? 我假设这里不需要更多的代码,因为我的控制器不会真正帮助解决方案,因为我认为这个决定是在它真正击中控制器之前由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 }); },
答案 0 :(得分:3)
update
方法仅在您发送PUT
请求而非POST
请求时使用。确保您使用的是PUT
方法。 (如果您显示表单的代码,我可以给出更具体的答案)。
更新 - 使用您的代码,尝试将其作为参数添加到qq.FileUploader
电话中:
params: {
_method: "put"
}
Rails会查找_method
参数来处理PUT / DELETE请求。
答案 1 :(得分:0)
我无法让Dylan的javascript方法工作,所以在我的控制器中,如果响应有id,我会重定向到我的更新。
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