Question

I have a users_controller which has this function in it:

def process_csv
puts 'processing csv file'
end

Then I have a show.html.erb file with a "link_to" tag on it.

<%= link_to 'Click HERE to open file', @user.image.url  %><br/><br/><br/>
<%= label_tag(:q, "Parse CSV File:") %><br/>
<%= link_to 'Parse CSV', {:controller => "users", :action => "process" } %>
<% end %>

This is the output of my rake routes:

 process_users GET    /users/process(.:format)     users#process
    users GET    /users(.:format)             users#index
          POST   /users(.:format)             users#create
 new_user GET    /users/new(.:format)         users#new
 edit_user GET    /users/:id/edit(.:format)    users#edit
     user GET    /users/:id(.:format)         users#show
          PUT    /users/:id(.:format)         users#update
          DELETE /users/:id(.:format)         users#destroy
 listings GET    /listings(.:format)          listings#index
          POST   /listings(.:format)          listings#create
  new_listing GET    /listings/new(.:format)      listings#new
  edit_listing GET    /listings/:id/edit(.:format) listings#edit
  listing GET    /listings/:id(.:format)      listings#show
          PUT    /listings/:id(.:format)      listings#update
          DELETE /listings/:id(.:format)      listings#destroy

This is my routes.rb file

 resources :users do
  collection do
     get:process
 end
 end

resources :listings

When I click on the link in the show.html.erb file. I was hoping to be directed to the process.html.erb view. Instead I get an error:

Routing Error
No route matches [GET] "/assets"

Ive tried a lot of combinations of switching things however nothing has worked as yet. So Im wondering if anyone can give me a hand.

Thanks,

Was it helpful?

Solution

the error is caused by 'assets', but not 'routes', so please make sure you are using 'asset-pipeline' correctly.

if you are under 'development' mode, please put all the image/js/css under "app/assets" folder.

if you are under 'production' mode, please make sure you have done this: bundle exec rake assets:precompile

for more information of assets pipeline , please refer to: http://guides.rubyonrails.org/asset_pipeline.html#in-production

BTW, since you are using RESTful routes, please modify your 'link_to' from :

<%= link_to 'Parse CSV', {:controller => "users", :action => "process" } %>

to:

<%= link_to 'Parse CSV', process_csv_users_path %>

at the same time, give the corresponding action a more readable name:

resources :users do
  collection do
    get :process_csv   
  end
end

and in your controller:

class UsersController ...
  def process_csv
    puts "bla bla bla"
  end
end 
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top