Question: Question:
Currently, I am using a Japanese URL on a site developed with rails.
I have generated a shared URL for facebook with request.url.
I get the following error and it doesn't work.
incompatible character encodings: UTF-8 and ASCII-8BIT
Many sites have solved it by the following method.
request.url.force_encoding("utf-8")
To prevent forgetting to write, do not encode using force_encoding("utf-8")
every time
I want to override the method itself in request.url
and encode it.
How can I override the existing request.url
method?
Answer: Answer:
This can be achieved by using a technique called around aliasing.
Try putting the following code under lib and loading it when Rails starts.
(Confirmed with rails 4.2.3.)
class ActionDispatch::Request
alias_method :__url, :url
def url
__url.force_encoding("utf-8")
end
end
Save the url method of request with another name, and then return the URL encoded by the new url method.
However, please note that the behavior of the part that originally called the url method (including in Rails!) May change. (Maybe something is wrong)
If you know where to generate the shared URL for facebook, I think it's safer to create a helper that returns the encoded URL obediently.