2015-09-23 3 views
0

Я новичок в ROR, и я пытаюсь добавить новый метод к контроллеру, но я не могу его решить. Ниже приводится новый метод в контроллере:ROR - Правила маршрутизации не работают

def bulkItemsUpload 
    respond_to do |format| 
     options = { col_sep: ',', converters: :numeric, headers: true } 
     array = [] 
     CSV.foreach(params[:file].path, options) do |row| 
     array.push(row.to_hash) 
     end 
     logger.debug "Parsed items: #{array.inspect}" 
     format.html { redirect_to companies_path } 
     format.js { render json: JSON.pretty_generate(array) } 
    end 
    end 

Ниже существующий маршрут для контроллера:

resources :projects, except: :show do 
    collection do 
     get :search 
     get :look_for_name 
     # post :bulkItemsUpload 
    end 

    member do 
     patch "/archive/:archive", constraints: {archive: /true|false/}, action: :archive, as: :archive 
    end 
    match "/timesheet", to: "timesheets#show", via: [:get, :post], as: :timesheet 
    match "/items", to: "items#show", via: [:get, :post], as: :items 
    match "/search_reports", to: "reports#index", via: [:post], as: :search_reports 

    resources :reports, except: :destroy 
    resource :email_permissions, only: [:new, :create] 

    resources :project_workers, only: [:destroy, :update] do  
     resources :worked_hours, only: [:update] 
    end 
    resources :project_items, only: [:destroy, :update] do 
     resources :used_items, only: [:update] 
    end 
    end 

Я добавил запись bulkItemsUpload в файле маршрута, но до сих пор не может решить. Любая идея, что я делаю неправильно?

+1

Предполагая, что это ваш контроллер проектов, где находится метод, и что у вас нет '#'. (и вы перезапустили свой сервер после того, как сделали изменение для перезагрузки маршрутов? – Doon

+0

Что делает «рейк-маршруты»? Включает ли он маршрут? – eirikir

+0

также маршруты CamelCasing являются нетрадиционными и могут вызывать проблемы (URL-адреса не чувствительны к регистру в конце), поэтому вы должны попробовать under_scoring их вместо – eirikir

ответ

1

Первый. Вы прокомментировали свой маршрут. Вы должны удалить знак #.

Второй. В методе рубинового (действие) должен иметь имя вроде этого:

def bulk_items_upload 
... 
end 

Если начать с Rails Я бы порекомендовал вам прикрепить несколько страниц в браузере:

Ruby style guide

Rails style guide

Это будет очень полезно для вас.

+0

Перезагрузка сервера сработала. Спасибо! – Emon

Смежные вопросы