- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 Valums uploader 与我的 Rails 项目一起工作,但遇到了很多困难。
我目前有一个使用标准模型和 View 的 Paperclip 的非常简单的上传过程......型号
class User
include Mongoid::Document
include Mongoid::Paperclip
has_mongoid_attached_file :image
Controller
def avatar
@user = current_user
respond_to do |format|
format.html
end
end
#working on the updateimage method
def update
file = params[:qqfile].is_a?(ActionDispatch::Http::UploadedFile) ? params[:qqfile] : params[:file]
@user = current_user
if @user.update_attributes(params[:user])
render :text => '{"success": true}', :content_type => "application/json"
else
render :text => @user.errors.to_json, :content_type => "application/json"
end
end
查看
= form_for(@user, :as => @user, :url => '/updateimage', :html => { :method => :post, :multipart => true }) do |f|
#file-uploader
=@user.firstname
%img{:src => current_user.image}
= f.file_field :image
= f.submit
Soooooo... 这一切都有效,但是当我尝试使用 Valums jQuery 时:
$('#file-uploader').fineUploader({
debug: true,
autoSubmit: true,
allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],
sizeLimit: 1048576, // max size: 1MB
minSizeLimit: 0, // min size
multiple: false,
request: {
endpoint: '/updateimage',
paramsInBody: true
}
});
我明白了:
undefined method `update_attributes' for nil:NilClass
我很想让它工作,但我对一般的编程有点陌生,所以它对我来说仍然是一个相当抽象的东西。我很乐意提供额外的日志信息,只需告诉我在哪里可以找到它。
路线
admin_index GET /admin(.:format) admin#index
POST /admin(.:format) admin#create
new_admin GET /admin/new(.:format) admin#new
edit_admin GET /admin/:id/edit(.:format) admin#edit
admin GET /admin/:id(.:format) admin#show
PUT /admin/:id(.:format) admin#update
DELETE /admin/:id(.:format) admin#destroy
orders GET /orders(.:format) orders#index
POST /orders(.:format) orders#create
new_order GET /orders/new(.:format) orders#new
edit_order GET /orders/:id/edit(.:format) orders#edit
order GET /orders/:id(.:format) orders#show
PUT /orders/:id(.:format) orders#update
DELETE /orders/:id(.:format) orders#destroy
entries GET /entries(.:format) entries#index
POST /entries(.:format) entries#create
new_entry GET /entries/new(.:format) entries#new
edit_entry GET /entries/:id/edit(.:format) entries#edit
entry GET /entries/:id(.:format) entries#show
PUT /entries/:id(.:format) entries#update
DELETE /entries/:id(.:format) entries#destroy
home_index GET /home(.:format) home#index
POST /home(.:format) home#create
new_home GET /home/new(.:format) home#new
edit_home GET /home/:id/edit(.:format) home#edit
home GET /home/:id(.:format) home#show
PUT /home/:id(.:format) home#update
DELETE /home/:id(.:format) home#destroy
avatar /avatar(.:format) home#avatar
updateimage POST /updateimage(.:format) home#update
root / home#home
root / home#index
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
user_omniauth_authorize /users/auth/:provider(.:format) users/omniauth_callbacks#passthru {:provider=>/facebook/}
user_omniauth_callback /users/auth/:action/callback(.:format) users/omniauth_callbacks#(?-mix:facebook)
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
PUT /users/password(.:format) devise/passwords#update
cancel_user_registration GET /users/cancel(.:format) users/registrations#cancel
user_registration POST /users(.:format) users/registrations#create
new_user_registration GET /users/sign_up(.:format) users/registrations#new
edit_user_registration GET /users/edit(.:format) users/registrations#edit
PUT /users(.:format) users/registrations#update
DELETE /users(.:format) users/registrations#destroy
user_confirmation POST /users/confirmation(.:format) devise/confirmations#create
new_user_confirmation GET /users/confirmation/new(.:format) devise/confirmations#new
GET /users/confirmation(.:format) devise/confirmations#show
user GET /users/:id(.:format) users#show
最佳答案
更新:我认为值得尝试单独使用 users#update
并创建一个单独的文件上传操作。
至于路由,FineUploader 仅执行POST
请求,因此您必须添加一个新路由,因为POST
请求到/users
端点会触发 users#create
操作,这不是您想要的。
match '/avatar', :to => 'users#avatar', :via => :post
此外,您还必须在服务器端处理文件上传。 This wiki page描述了两种方法。例如,您可以使用 rack-raw-upload
gem 并将 Controller 代码更改为以下内容:
def update
# this action does not handle AJAX file upload
# ...
end
def avatar
file = params[:qqfile].is_a?(ActionDispatch::Http::UploadedFile) ? params[:qqfile] : params[:file]
@user = current_user
if @user.update_attributes({ :image => file })
render :json => { :success => true }
else
render :json => { :success => false }
end
end
请注意,config/application.rb
中必须有一行(如果您使用 rack-raw-upload
gem):
config.middleware.use 'Rack::RawUpload'
另外,paramsInBody
好像应该属于request
参数:
$('#file-uploader').fineUploader({
request: {
endpoint: "/avatar",
paramsInBody: true
},
debug: true
})
最后的注意事项:发出 AJAX 请求时,CSRF token 必须包含在 header 中,以便启用用户身份验证。这可以通过编辑 fineuploader.js
中的 setHeaders
函数来完成——将以下行添加到该函数中:
xhr.setRequestHeader("X-CSRF-Token", $("meta[name='csrf-token']").attr("content"));
关于ruby-on-rails - Rails Valums Ajax 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15254470/
我正在尝试在 VB 中使用 ASP.NET 设置 Valums 文件 uploader ( https://github.com/valums/file-uploader )。该文件当前正在上传并存储
我在 valums fileuploader 中使用多个实例, 但似乎上传者只对每个实例使用最后的设置,是否有避免这种情况并使用本地设置的选项?在正确的实例上上传正常,但无论我使用哪个实例,initi
这里有人用过 Valum 的文件上传脚本吗?它安全且跨浏览器(包括旧版本)兼容吗?您也推荐它吗?它确实说它支持最新版本的 FF、Chrome 和 IE...只是询问第二个意见...任何已知问题等? 另
我在 asp.net mvc 3 中使用 valums 上传文件插件。我有两个下拉框和一个 ajax valums 上传文件按钮。我在 View 中有以下代码: @using (Html.Beg
无论我在此脚本中进行什么更改,当我上传文件时,页面都会查找操作 do-nothing.htm。这是下载示例中插件的 ACTION 设置的内容,但我已经更改了它。 我还更改了 Javascript 中的
我刚看到这个ajax upload plugin我希望在 demo page example 3 中所示的表单中使用它.出于某种原因,我无法让它工作。我不确定函数中有哪些参数。例如,这是我的示例代码。
有什么办法可以制作Valums File Uploader仅接受单个文件? 现在,使用 multiple: false 您无法限制要上传的文件数量,但您可以让用户逐个上传文件,而不是允许多项选择。 我
是的,所以我正在使用这个,valums ajax fileupload: http://valums.com/ajax-upload/ 使用这些设置: function createUploader(
大家好,在我最近的项目中,我使用 valums 文件 uploader 进行基于 ajax 的文件上传,因为我发现它最符合我的要求,但现在我卡在了一点,那就是我想从中删除拖放功能我已经在互联网上搜索了
在 Valums github 上,我找到了两个上传者存储库: https://github.com/valums 第一个称为 Ajax 上传,第二个称为文件上传。在演示页面上,他们第一眼看上去是在做
我的问题是文件 uploader http://valums.com/ajax-upload/ 将参数添加到 URL 而不是通过 POST 传递它们。 例如: action:'/upload.php'
我试图让 Valums uploader 与我的 Rails 项目一起工作,但遇到了很多困难。 我目前有一个使用标准模型和 View 的 Paperclip 的非常简单的上传过程......型号 cl
我正在使用 Valums Ajax Uploader 上传一批文件。我们最近将代码从单一上传类型更改为多重上传类型。这给我们的代码带来了问题。 如您所见,当 onComplete 事件触发时,我们重新
我正在尝试设置一个包含多个文件 uploader 部分的页面 无论如何,到目前为止它工作正常,但我遇到了一个小问题: 我希望每次使用该页面上的 uploader 时都为文件创建一个新文件夹。 所以我在
当使用 valums ajax uploader 上传文件时,我们会得到包含文件名和文件大小的文件列表。我希望该列表带有文件的文件名、文件大小和删除链接。因此,当用户单击删除时,文件应该从显示的列表中
使用 Valums Ajax 文件 uploader 时,如何触发上传? 默认行为是在用户选择文件后立即开始上传。我想防止这种情况发生,而是在用户选择文件后单击单独的“上传”按钮时触发上传。 我查看了
我正在使用 Valums 出色的文件 uploader - https://github.com/valums/file-uploader 我想添加的一件事是基于用户帐户余额的限制。 第一张图片始终免
我正在尝试使用 Valum 的文件上传脚本 ( http://valums.com/ajax-upload/ ) 来允许创建允许文件上传的链接。 我正在使用 jQuery 库。 使用标准文档让页面上的
我正在使用 Valums Ajax Uploader在我的网站上。在我的本地计算机上一切正常,但是当我在我的网站主服务器上尝试相同的上传程序时,Firbug 显示此错误: 发布 http://www.
Valums file-uploader (现在称为 Fine Uploader )在 Internet Explorer 9 下不起作用,但在 Chrome 下运行良好。 因此在 IE 下它显示文件
我是一名优秀的程序员,十分优秀!