How to not display :id in link_to URL


#1

Hello all.

I have a page which has a form on it. the page’s URL is
http://127.0.0.1:3000/Component/history and The form action is:

<%= start_form_tag :action => :history %>
<%= text_field_tag ‘id’, “#{session[:component_criteria]}” || nil,
:class => ‘mandatory’ %>

<%= submit_tag “Search”, :class => “button” %>
<%= end_form_tag %>

When this form is submitted then the page is loaded again with the same
URL
with fields further down the page populated based on the params[:id]
submitted with the form. (My controller does different things based on
request.get?)

All this works groovily. If, however, I try and link to this page from
another page using:

<%= link_to "#{componentlog.cl_compname}", { :controller => 'component', :action => 'history', :id => componentlog.cl_compname}, :post => true %>

The page is loaded with the following URL:

http://127.0.0.1:3000/Component/history/ComponentName

Then any future searches on the form will have the :id value overridden
with the one in the URL string

Since I am using POST in the link_to I didn’t expect to see the :id in
the URL string. (Since it doesn’t appear when I submit the form, also a
POST). Javascript is not disabled.

How can I load the page so that the URL only has the :controller and the
:action
but the :id, while being passed to the page, is not in the actual URL
string.

If I breakpoint into the controller the page is definately loaded with a
POST.

Many thanks

Jeff J.


#2

Jeff J. wrote:

I have a page which has a form on it. the page’s URL is
http://127.0.0.1:3000/Component/history and The form action is:

<%= start_form_tag :action => :history %>

How can I load the page so that the URL only has the :controller and the
:action
but the :id, while being passed to the page, is not in the actual URL
string.

Try
<%= form_tag :id => nil %>


We develop, watch us RoR, in numbers too big to ignore.


#3

Mark Reginald J. wrote:

Jeff J. wrote:

I have a page which has a form on it. the page’s URL is
http://127.0.0.1:3000/Component/history and The form action is:

<%= start_form_tag :action => :history %>

How can I load the page so that the URL only has the :controller and the
:action
but the :id, while being passed to the page, is not in the actual URL
string.

Try
<%= form_tag :id => nil %>


We develop, watch us RoR, in numbers too big to ignore.

Woohoo! That did it, thanks very much. That was the last known bug in
this program.

Many cookies to you.

Jeff