Anybody no how to read the anchor of a request?
I make an redirect_to like this:
redirect_to :controller=>"foo" :action=>"index" :anchor=>"bar"
then in action index,I try to read url like this:
c=request.path_parameters['controller']
ac=request.path_parameters['action']
an=request.path_parameters['anchor']
finally I get c and ac the value I want,but fail to get an
You do not have permission to post to group rubyonrails-talk. You
may need to
join the group before being allowed to post, or this group may not be
open to
posting.
I'm not so sure,but I try two ways to fire a request with an anchor:
1) I use browser to send something like: localhost.com/foo#bar
2) I also use
redirect_to :controller=>"foo" :action=>"index" :anchor=>"bar"
And I use logger.info(params[:anchor]) to monitor the result,and what
I get is always a blank row.By the same time,I have
logger.info(params[:controller]) get the right value there.
and I also got a correct redirect url with an anchor I set,so I think
the anchor is set at least by the redirect way. And I think the
problem is params didn't get it. The proof is when I use
params.to_json,what i get is something like:
{action: "index", controller: "foo"},but no anchor.
Are you completely sure this works? As far as I know, browsers don't
pass anchor information in their requests, and my experimentation here
seems to verify this. I don't think it's possible to read the anchor
from the URL on the server (though you can set it there).
here's my code of controller:
class FooController < ApplicationController
def o
logger.info("i'm in o")
logger.info(params[:controller])
logger.info(params[:action])
logger.info(params[:anchor])
logger.info(params.to_json)
redirect_to (:action=>"a",:anchor=>"blabla")
end
def a
logger.info("i'm in a")
logger.info(params[:controller])
logger.info(params[:action])
logger.info(params[:anchor])
logger.info(params.to_json)
respond_to do |format|
format.html {render :text=> "hi"}
end
end
end
and i send a request in browser like:"localhost.3000/foo/o#kkk"
and i get a hi response with a url:flocalhost.3000/foo/a#blabla
I get the right value with params[:controller] and params[:action],but
nothing with params[:anchor]
i'think
Bill Kocik is right, the reason is the browser won't send anchor to
the server