Macrow / rails_kindeditor

Kindeditor for Ruby on Rails
260 stars 108 forks source link

上传图片发现没有route #56

Closed bigbenli closed 10 years ago

bigbenli commented 10 years ago

上传本地图片时出现了这个...

No route matches [POST] "/cnkindeditor/upload"

<%= form_for @product..... %> <%= f.kindeditor :description, :editor_id => 'my_editor' %> <% end %>

环境 rails 3.2.12, mongoid, carrierwave 0.6.2, carrierwave-mongoid, i18n

正常应该是/cn/kindeditor/upload, 现在post的是 /cnkindeditor/upload. 直接把 /cn 粘在一起了.

Macrow commented 10 years ago

能把你的路由配置贴出来看看吗?

bigbenli commented 10 years ago

Program::Application.routes.draw do mount Resque::Server, :at => "/resque"

scope "(:locale)" do devise_for :admin_users, :class_name => "SuperAdmin::User", :path => "/super_admin" devise_for :users, :class_name => "Customer::User",:path => '/users', :path_names => { :sign_in => "login", :sign_out => "log_out" } root :to => 'home#index'

namespace :customer do
  resources :abilities
  resources :permissions
  resources :roles
  resources :companies
  resources :user_profiles do
    get 'edit_password', :on => :collection
    put 'update_password', :on => :member
  end
end

namespace :commodity do
  resources :brands
  resources :categories
  resources :attribute_sets 
  resources :products
    resources :specifications
  end
end

namespace :kindeditor do
  post "/upload" => "assets#create"
  get  "/filemanager" => "assets#list"
end
Macrow commented 10 years ago

@bigbenli rails_kindeditor会自动添加路由的,不知道你为什么要在路由配置里面再次加入?而且你的代码似乎没有贴完整。

namespace :kindeditor do
  post "/upload" => "assets#create"
  get  "/filemanager" => "assets#list"
end

另外rails_kindeditor的路由配置不需要多语言支持,它仅仅是完成上传操作,普通用户不会看到这个路径,也不会直接访问这个路径,所以把上面这段代码放在语言配置里面没有必要。你把这段代码删掉后再试一下。

yeyong123 commented 10 years ago

@bigbenli 我也遇到这样的问题,你最后是怎么解决的

No route matches [POST] "/zh-CNkindeditor/upload"
bigbenli commented 10 years ago

@Macrow , @yeyong14 本来我也是没有手动把路由添加上去的, 就是因为出现了no route match, 所以才自己手动添加上去的. 到最后...没解决, 反正就是locale后面不会自动加上 /

yeyong123 commented 10 years ago

@bigbenli @Macrow 这个的路由应该在哪里修改,我把scope(:locale)去掉了,还是这样

Macrow commented 10 years ago

@bigbenli @yeyong14

rails_kindeditor提供的路由本身是在gem里面提供的,这些路由是通过Rails的Engine机制加载到你的App里面的,所以,你根本不需要在你的路由里面加入rails_kindeditor的路由,他会自动加入。

关于诊断路由,你们试一下rake routes,看看你们的路由配置是否有问题,可以贴出来分析一下。

yeyong123 commented 10 years ago

@bigbenli @Macrow

  new_center GET    (/:locale)/centers/new(.:format)                              centers#new
                  edit_center GET    (/:locale)/centers/:id/edit(.:format)                         centers#edit
                       center GET    (/:locale)/centers/:id(.:format)                              centers#show
                              PUT    (/:locale)/centers/:id(.:format)                              centers#update
                              DELETE (/:locale)/centers/:id(.:format)                              centers#destroy
                     contacts GET    (/:locale)/contacts(.:format)                                 contacts#index
                              POST   (/:locale)/contacts(.:format)                                 contacts#create
                  new_contact GET    (/:locale)/contacts/new(.:format)                             contacts#new
                 edit_contact GET    (/:locale)/contacts/:id/edit(.:format)                        contacts#edit
                      contact GET    (/:locale)/contacts/:id(.:format)                             contacts#show
                              PUT    (/:locale)/contacts/:id(.:format)                             contacts#update
                              DELETE (/:locale)/contacts/:id(.:format)                             contacts#destroy
                       search        (/:locale)/search(.:format)                                   products#search
                        error        (/:locale)/error(.:format)                                    home#error
                         root        /(:locale)(.:format)                                          home#index
china_region_fu_fetch_options GET    /china_region_fu/fetch_options(.:format)                      #<Proc:0x9dba390@/home/york/.rvm/gems/ruby-2.0.0-p247/gems/actionpack-3.2.13/lib/action_controller/metal.rb:245>
            kindeditor_upload POST   /kindeditor/upload(.:format)                                  kindeditor/assets#create
       kindeditor_filemanager GET    /kindeditor/filemanager(.:format)                             kindeditor/assets#list

Routes for RailsAdmin::Engine:
    dashboard GET         /                                      rails_admin/main#dashboard
        index GET|POST    /:model_name(.:format)                 rails_admin/main#index
          new GET|POST    /:model_name/new(.:format)             rails_admin/main#new
       export GET|POST    /:model_name/export(.:format)          rails_admin/main#export
  bulk_delete POST|DELETE /:model_name/bulk_delete(.:format)     rails_admin/main#bulk_dele

我试着另外新建了一个项目,好像不需要修改rails的route就可以直接用。这个是怎么回事!

Macrow commented 10 years ago

从你的路由诊断来看,应该没什么问题,只是把rails_admin的路由挂载到根目录有点奇怪。

不知你的view里面有什么问题,如果不涉及项目保密问题,可否把项目传到github,可以详细看看。

yeyong123 commented 10 years ago

@Macrow 项目地址 去掉多语言环境,点击上传图片,就在显示一个首页的框架,在最底下有一行字

{"localUrl"=>"C:\\fakepath\\20111027155421609.jpg", "imgFile"=>#<ActionDispatch::Http::UploadedFile:0x9b3c550 @original_filename="20111027155421609.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"imgFile\"; filename=\"20111027155421609.jpg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<Tempfile:/tmp/RackMultipart20140108-16384-qnhitn>>, "locale"=>"zh-CNkindeditor/upload", "dir"=>"image", "controller"=>"home", "action"=>"index"}
Macrow commented 10 years ago

看到了,我具体去看看。

yeyong123 commented 10 years ago

@Macrow 是哪里出了问题。我真不知问题出在哪,这个路由能不能在自己定义的。还有,这个要怎么集成到rails_admin中

Macrow commented 10 years ago

@yeyong14 @bigbenli

确实是rails_kindeditor代码存在bug,没有考虑到默认root_path相关问题,我已在v0.4.5的版本中进行了修正。

请使用新版本。