ramya
ramya

Reputation: 928

link_to a form in ruby

I want to use the link to function to point to a form. i.e <%= link_to 'Reports', '/reports/index.html.erb' %> But this gives me a error saying no route matches '/reports/index.html.erb.

Thanks, Ramya.

Upvotes: 1

Views: 82

Answers (2)

bricker
bricker

Reputation: 8941

Rails doesn't like having the document format in the URL unless it's necessary (like when one action can handle multiple request formats). If you have reports/index.html.erb, the route to it would look like one of these:

match 'reports' => 'reports#index' #=> 'yourdomain.com/reports'
match 'reports/index' => 'reports#index' #=> 'yourdomain.com/reports/index

Then your link would be:

<%= link_to 'Reports', 'reports' %>

or

<%= link_to 'Reports', 'reports/index' %>

If you really wanted to have the .html, you could probably do it like this:

match 'reports/index.html' => 'reports#index' #=> 'yourdomain.com/reports/index.html

or

match 'reports/index.:format' => 'reports#index' #=> 'yourdomain.com/reports/index.html

But the .html is meaningless in the first case and unnecessary in the second. I don't recommend doing it this way, as it's not standard Rails practice.

I highly recommend you read this tutorial on Routing, at least the first few sections, before you move forward. It's an absolutely essential part of Rails, and if you don't understand how it works, you will never be a productive Rails programmer.

Upvotes: 2

Arsen7
Arsen7

Reputation: 12830

The link should point to the form from the server's point of view. Try <%= link_to 'Reports', '/reports/index.html' %> (without the '.erb')

Make sure that your routes really define that url. I guess it may be '/reports/' instead of '/reports/index.html', but YMMV.

Consult the output of command rake routes to see what routes are defined.

Upvotes: 2

Related Questions