Hi, everyone. I'm working on a program in Rails 3.0.10 and it has a
custom action, "run_files", that extracts data in files and saves it in
database. When I clicked the link on the page, it returned an error
page:
ActiveRecord::RecordNotFound in ReportsController#show
Couldn't find Report with ID=run_files
I wonder why Rails rendered show instead of the custom action.
Following is the view file, route file and the output of rake routes.
You have the route specified to only accept POST requests, but by using
link_to, you're creating a hyperlink that generates a GET request.
You'll need to either change your routes to accept a GET request, or
change
your method of calling the URL to a POST request (from a form).
Thanks Tim. I tried both and they work! But I noticed that it
generated one more sql query when a GET request's sent than that when a
POST request's sent.
<-[1m<-[35mSQL (0.0ms)<-[0m SELECT name FROM sqlite_master WHERE
type = 'table' AND NOT name = 'sqlite_sequence'
That query is nothing to worry about. It’s just rails running a query to figure out which tables you have in your database so it can figure out which columns they have so it can make your models work properly.
In production it should only run once (when the server is first started). But then again you probably shouldn’t be using sqlite in production.