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