Routing Problem

Relatively new to Ruby on Rails, i'm currently getting this routing
error I get after going to:- http://localhost:3000/licenses :-

No route matches {:controller=>"licenses", :action=>"csv_import"}

My current routes.rb file:-

Inventory::Application.routes.draw do
  root :to => "home#index"

  ActiveAdmin.routes(self)

  devise_for :admin_users, ActiveAdmin::Devise.config

  resources :licenses
end

Relatively new to Ruby on Rails, i'm currently getting this routing
error I get after going to:- http://localhost:3000/licenses :-

No route matches {:controller=>"licenses", :action=>"csv_import"}

My current routes.rb file:-

Inventory::Application.routes.draw do
root :to => "home#index"

ActiveAdmin.routes(self)

devise_for :admin_users, ActiveAdmin::Devise.config

resources :licenses
end

Try this:

  resources :licenses do
    collection do
      post 'csv_import'
    end
  end

That's off the top of my head, but it should help. resources :licenses just gets you the 7 RESTful actions, anything else you need to add yourself, or use a wildcard map (haven't seen one of those in quite a while).

Walter

If you make this
resource :licenses do
  member do
    get 'csv_import'
  end
end

That will add the action csv_import as a GET operation to the routes.
It may well be that you don't want it to be a GET however, but that is
a different issue.

See the Rails Guide on routing for more information.

Colin

Walter Davis wrote in post #1034132:

ActiveAdmin.routes(self)

devise_for :admin_users, ActiveAdmin::Devise.config

resources :licenses
end

Try this:

  resources :licenses do
    collection do
      post 'csv_import'
    end
  end

That's off the top of my head, but it should help. resources :licenses
just gets you the 7 RESTful actions, anything else you need to add
yourself, or use a wildcard map (haven't seen one of those in quite a
while).

Walter

Thanks this has fixed the problem, but index.html.erb doesn't display my
import csv file button, the code i have in index.html.erb:-

<h1>Listing licenses</h1>

<table>
  <tr>
    <th>App</th>
    <th>Serial</th>
    <th>User</th>
    <th>Notes</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @licenses.each do |license| %>
  <tr>
    <td><%= license.app %></td>
    <td><%= license.serial %></td>
    <td><%= license.user %></td>
    <td><%= license.notes %></td>
    <td><%= link_to 'Show', license %></td>
    <td><%= link_to 'Edit', edit_license_path(license) %></td>
    <td><%= link_to 'Destroy', license, confirm: 'Are you sure?',
method: :delete %></td>
  </tr>
<% end %>
</table>

<% form_for :dump, :url=>{:controller=>"licenses",
:action=>"csv_import"}, :html => { :multipart => true } do |f| -%>
<table">
   <tr>
     <td>
      <label for="dump_file">
        Select a CSV File :
      </label>
     </td>
     <td >
       <%= f.file_field :file -%>
     </td>
   </tr>
   <tr>
     <td colspan='2'>
       <%= submit_tag 'Submit' -%>
     </td>
   </tr>
</table>
<% end -%>

<br />

<%= link_to 'New License', new_license_path %>

I suggest starting a new thread for this as it is nothing to do with
the subject line. In the meantime have a look at the generated html
(View > Page Source or similar in the browser) and see whether your
erb is generating the correct html.

Colin